所以我必须要看一些非常基本的东西。我正在尝试使用ajax http post请求发送表单数据来更新mysql记录。我有一个表格的页面。在窗体上我有一个提交按钮,从一个单独的js文件调用http请求,并且该js文件调用一个php文件。使用firebug,它看起来不像我有任何错误但是当我“打印”请求返回的sql时,它没有传递实际变量,它只是传递“$ _POST ['name']”literallty。
它讽刺了sql:
UPDATE contacts SET name= "$_POST['name']" , phone = "$_POST['phone']" WHERE id = "$_POST['id']"
而不是传入实际的变量值。我的问题是我如何传递实际的变量数据,以便它返回一些符号:
UPDATE contacts SET name= "Mike", phone = "303-333-3333" WHERE id = "001"
我的表单(其周围不包含表单标签)如下所示:
<label>
<input type="text" name="name" id="name" />
</label>
<label>
<input type="text" name="phone" id="phone" />
</label>
<label>
<input type="hidden" name="id" id="id" />
</label>
<label>
<input onclick="sendData()"type="submit" name="button" id="button" value="Submit" />
</label>
我的js在一个单独的文件中看起来像:
function sendData()
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("center").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","xhr_php/send.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("name={$_POST['name']}&phone={$_POST['phone']}&id={$_POST['id']} ");
}
我的send.php文件如下:
db_connection include
$name= $_POST['name'];
$phone= $_POST['phone'];
$id = $_POST['id'];
print $query = "UPDATE contacts SET
name = '{$name}',
phone = '{$phone}',
WHERE id= {$id}";
$results= mysql_query($query, $db_connection);
if(mysql_affected_rows()==1){
echo "Success";
}
if(mysql_affected_rows()==0){
echo "failed";
}
同样,在调用正确的文件方面,一切似乎都正常工作,它只是没有传递任何变量数据。任何帮助将非常感激。谢谢。
答案 0 :(得分:0)
我认为这个错误就行了
xmlhttp.send("name={$_POST['name']}&phone={$_POST['phone']}&id={$_POST['id']} ");
将其更改为:
var name = document.getElementById('name').value;
var phone = document.getElementById('phone').value;
var id = document.getElementById('id').value;
xmlhttp.send("name="+name+"&phone="+phone+"&id="+id);