2013-07-19 2 views
0

주위를 둘러 보았지만이를 확인한 것처럼 보이지 않습니다. 양식 데이터를 처리하여 데이터베이스에 삽입하기 위해 PHP로 보내고 싶습니다 (현재 작동 중입니다).Javascript에서 PHP로 데이터를 보내고 JS의 변수로 PHP의 응답을 사용하십시오.

그런 다음 다시 사용할 수 있도록 PHP에서 JavaScript 함수 (가능한 경우 동일한 함수)로 변수 ($ selected_moid)를 보내려고합니다. 여기

function submit_data() { 
    "use strict"; 
    $.post('insert.php', $('#formName').formSerialize()); 
    $.get('add_host.cgi?moid='.$selected_moid.'); 
} 

내 최신 시도,하지만 여전히 점점 오류 :

PHP :

$get_moid = " 
    SELECT ID FROM nagios.view_all_monitored_objects 
    WHERE CoID='$company' 
    AND MoTypeID='$type' 
    AND MoName='$name' 
    AND DNS='$name.$selected_shortname.mon' 
    AND IP='$ip' 
    "; 
while($MonitoredObjectID = mysql_fetch_row($get_moid)){ 
    //Sets MonitoredObjectID for added/edited device. 
    $Response = $MonitoredObjectID; 
    if ($logon_choice = '1') { 
     $Response = $Response'&'$logon_id; 
     $Response = $Response'&'$logon_pwd; 
    } 
} 
echo json_encode($response); 

JS :

function submit_data(action, formName) { 
    "use strict"; 
    $.ajax({ 
     cache: false, 
     type: 'POST', 
     url: 'library/plugins/' + action + '.php', 
     data: $('#' + formName).serialize(), 
     success: function (response) { 
      // PROCESS DATA HERE 
      var resp = $.parseJSON(response); 
      $.get('/nagios/cgi-bin/add_host.cgi', {moid: resp }); 
      alert('success!'); 
     }, 
     error: function (response) { 
      //PROCESS HERE FOR FAILURE 
      alert('failure 'response); 
     } 
    }); 
} 
+1

http://stackoverflow.com/questions/17752001/ajax-call : 함수로이의

Var Form_Data = THIS IS THE DATA OF THE FORM; function YOUR FUNCTION HERE(VARS HERE) { $.ajax({ cache: false, type: 'POST', url: 'FILE IN HERE FOR PROCESSING', data:Form_Data.serialize(), success: function(data) { // PROCESS DATA HERE }, error: function(data) { //PROCESS HERE FOR FAILURE } }); } 

지금 당신은 또한 기능을 것입니다 버튼 클릭으로 사용할 수 -returns-whole-page-a-max 값 이라기보다는 AJAX 요청이라고 부름 – bksi

+0

여기에'$ .get()'을 쓸 필요가 없다. 변수를'$ .post()'를 호출하고 콜백 함수에서 처리합니다. [jQuery doc] (http://api.jquery.com/jQuery.post/)을보십시오 –

답변

0

반환 값을 얻으려면 콜백 함수를 사용해야합니다.

<?php 
start_session(); <-- This will make it share the same Session Princables 
//error check and soforth use $_POST[] to get everything 
$Response = array('success'=>true, 'VAR'=>'DATA'); <--- Success 
$Response = array('success'=>false, 'VAR'=>'DATA'); <--- fails 
    echo json_encode($Response); 
?> 

는 PHP

지금

function submit_data(action, formName) { 
    "use strict"; 
    $.post('insert.php', $('#' + formName).formSerialize(), function (selected_moid) { 
     $.get('add_host.cgi', {moid: selected_moid }); 
    }); 
} 
+0

유망 해 보입니다. 나는 그것을 시도 할 것입니다. –

+0

'formName' 매개 변수를 올바르게 사용하도록 수정했습니다. 나는 당신이 어떻게'행동'을 사용하기를 의도했는지 확신하지 못합니다. – Barmar

+0

나는 사실 단순하게하기 위해 그것을 꺼내려고했다. 매개 변수는 실제 JS에서만 사용되었습니다. 여기에서 사용하기 위해, 나는 그 (것)들을 선물하게 할 필요가 있다고 생각하지 않았다. 좀 더 단순화 된 예제로 OP를 업데이트했습니다. –

1

는 내가 외출하고 당신의 질문이 이후 사지 내가 100 % 명확하지 않습니다. 우선, 자바 스크립트 AJAX 호출은 비동기 적이기 때문에 $.get$.post이 거의 동시에 호출됩니다.

하나의 응답을 받고 두 번째 호출에서 응답을 사용하려는 경우 성공 함수에 응답을 중첩해야합니다. 당신이 jQuery를 사용하고 있기 때문에 데이터베이스와 모든 업데이트 한 후, 바로 echo 데이터를 원하는, 당신의 AJAX 호출이 당신의 PHP 스크립트에서 (http://api.jquery.com/jQuery.post/)

$.post('insert.php', $('#formName').formSerialize(),function(data){ 
    $.get('add_host.cgi?moid='+data); 
}); 

을 처리 할 수있는 인자를보고 자신의 API에 대해 살펴 . Javascript가 텍스트를 가져 와서 성공 함수의 변수 data에 넣습니다.

0
$("ID OF THE SUBMIT BUTTON").click(function() { 
      $.ajax({ 
       cache: false, 
       type: 'POST', 
       url: 'FILE IN HERE FOR PROCESSING', 
       data: $("ID HERE OF THE FORM").serialize(), 
       success: function(data) { 
        // PROCESS DATA HERE 

       }, 
       error: function(data) { 
        //PROCESS HERE FOR FAILURE 
       } 
      }); 
      return false; //This stops the Button from Actually Preforming 
     }); 

나는이 이렇게 자바 스크립트/jQuery를, 그리고 아약스를 사용하고 언급하는 것을 잊었다. 3

+0

OP와 같은 형식으로이 AJAX 기능을 저장할 수 있습니까? 여러 곳에서 호출되어 여전히 submit_data() 함수를 사용하고 싶습니다. 체재. –

+0

이 병 –

+0

이를 시도하지만, 콘솔에 오류가 점점에 momment 홀드의 예를 넣을 수 있습니다 예 : catch되지 않은 구문 에러 : 예기치 않은 토큰 P의 JQuery와-latest.js을 : 550 jQuery.extend.parseJSON JQuery와 - 최신 의 .js : 550 $ .ajax.success javascript.js : 176 화재 JQuery와 - latest.js : 3048 self.fireWith의 JQuery와 - latest.js : 3160 수행 JQuery와 - latest.js : 8235 콜백 –

관련 문제