2013-08-05 67 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

谢谢,但我通过调用函数并传递“数据”来获得它。现在它工作得很好。谢谢! –