我花了几个小时寻找帮助,返回Javascript AJAX调用php脚本。
我想要做的是,在表中插入一个值,然后返回该插入行的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 :(得分:3)
我知道有点难以理解ajax Newbies的Ajax调用方法, 所以在这里我建议用Jquery .post ajax调用方法来做这个!
这是这样做的方式,
使用jQuery .post()函数
您可以通过此函数将数据传递到任何外部php文件并获取输出。 (它会自动对远程php文件进行ajax调用)
<!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";
?>