2013-08-05 155 views
0

我花了數小時尋找幫助,以返回到Javascript腳本的AJAX調用的幫助。將AJAX值返回給Javasscript變量

我想要做的是向表中插入一個值,然後返回該插入行的id,然後可以在窗體中使用它,所以當用表單數據更新表的時候,它可以指定它應該去哪(哪一行)。我需要這樣做,所以我基本可以保留該行,並且不會被其他用戶盜取。

這是我一直在用電話:

id = getID('<?php echo $q; ?>','<?php echo $i; ?>'); 

PHP的值是有效的(看代碼,顯示值),並使用var聲明JavaScript函數之外。

這是AJAX功能:

var xmlhttp; 

function getID(q, i) 
{ 
    xmlhttp=GetXmlHttpObject(); 
    if (xmlhttp==null) 
    { 
    alert ("Sorry but your browser does not support AJAX or Javascript has been disabled"); 
    return; 
    } 

    var url = "getID.php"; 

    url = url + "?q=" + q; 
    url = url + "&i=" + i; 

    // execute the fully formed request 
    xmlhttp.onreadystatechange=stateChanged; 
    xmlhttp.open("GET",url,true); 
    xmlhttp.send(null); 
} 


function stateChanged() 
{ 
    if (xmlhttp.readyState==4) 
    { 
     id = xmlhttp.responseText; 
// alert(xmlhttp.responseText); 
// return xmlhttp.responseText; 
    } 
} 


function GetXmlHttpObject() 
{ 
    if (window.XMLHttpRequest) 
    { 
    // code for IE7+, Firefox, Chrome, Opera, Safari 
    return new XMLHttpRequest(); 
    } 
    if (window.ActiveXObject) 
    { 
    // code for IE6, IE5 
    return new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    return null; 
} 

和PHP代碼:

$q = $_GET['q']; 
$i = $_GET['i']; 

$query = "INSERT INTO parts (q, i) VALUES ('".$q."','".$i."')"; 

$results = mysql_query($query) or die(mysql_error()); 
$nextId = mysql_insert_id(); 
echo "$nextId"; 

如果我提醒值,它會正確地返回,但在形式上,這是創建一個DOM動態行爲這個值和數據輸入,它會出現「未定義」。任何人都可以指導我如何使這項工作?我承認我不是AJAX專家,當我嘗試他們時,我似乎無法獲得回調工作,坦率地說,並不真正瞭解如何...

如果有人提前謝謝,可以提供。

+0

使用'回聲json_encode'在你的PHP腳本 –

+1

一般性意見:使用jQuery和PDO – Songo

+0

你能告訴我在哪裏使用?在PHP中代替回聲? –

回答

3

我知道它有點難以理解ajax新手的Ajax調用方法, 因此,我建議使用jquery .post ajax調用方法來做到這一點!

這裏是做它的方式,

使用jQuery。員額()函數

您可以通過此功能,將數據傳遞給任何外部的PHP文件,並得到輸出。 (它會自動進行Ajax調用遠程PHP文件)

<!DOCTYPE html> 
    <html> 
    <head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> 
    </script> 
    <script> 
    $(document).ready(function(){ 
     $("button").click(function(){ 
     $.post("getID.php", 
     { 
      q:"some data", // here set the variables you want to pass as $_POST 
      i:"some data"  // here set the variables you want to pass as $_POST 
     }, 
     function(data,status){ 
      alert("PHP file Output: " + data + "\nStatus: " + status); 
      // here take the the php file output using the "data" variable , "status" is optional 
     }); 
     }); 
    }); 
    </script> 
    </head> 
    <body> 

    <button>Send an HTTP POST request to the php file and get the result back</button> 

    </body> 
    </html> 

PHP文件:

<?php 
$q = $_POST['q']; 
$i = $_POST['i']; 

$query = "INSERT INTO parts (q, i) VALUES ('".$q."','".$i."')"; 

$results = mysql_query($query) or die(mysql_error()); 
$nextId = mysql_insert_id(); 
echo "$nextId"; 

?> 
+0

我只有兩個小問題。當我第一次觸發它的時候,我想在表單中填入「未定義」字段。對於每隔一段時間我觸發它(對於一個新行),它將填充該值。編輯 - 其他問題...我錯過了POST而不是GET。如果您有任何建議...在此期間,我將看看我能夠自己弄清楚什麼。再次感謝! –

+1

@WillSam問題1:如果您可以共享您用於表單更新的代碼,那麼很容易發現問題! – Cody

+0

謝謝,但我通過調用函數並傳遞「數據」來獲得它。現在它工作得很好。謝謝! –