PHP / AJAX | POST数据没有被采取?

时间:2012-12-11 08:04:54

标签: php ajax twitter-bootstrap

我有一个使用点击编辑AJAX POST请求的插件,我编写了所有脚本,但是当我去测试它时,它从未改变我试图修改的数据库值,所以我改变了您设置为将请求报告到我的谷歌控制台的功能的URL,它返回以下内容,

Object {name: "", value: "derp@derpp.com", pk: 23} 

这是我尝试使用AJAX的PHP脚本,

<? $query = " 
    UPDATE users SET email = '".$_POST['value']."' WHERE id = '".$_POST['pk']."'
";      
try 
{
    $stmt = $db->prepare($query); 
    $stmt->execute(); 
} 
catch(PDOException $ex) 
{  
    die("Failed to run query: " . $ex->getMessage()); 
} 
$rows = $stmt->fetchAll();
?>

我的整体问题是,AJAX没有更改内容,我手动测试了脚本,一切正常。

修改

我不是手动执行AJAX请求,而是使用了一个名为X-Editable的插件,可以找到文档here

3 个答案:

答案 0 :(得分:1)

您是否检查了您发送的数据实际上是在邮寄请求中。我会检查我是否正在使用正确的jquery post请求,例如 的 $。AJAX({   类型:'POST',   url:url,   数据:数据,   成功:成功,   dataType:dataType });

发送帖子数据没有帮助。此外,如果您没有传递任何虚拟值,例如javascript.getTime函数,那么在某个时候xmlhttp对象无法识别为新查询时,最好使用它。 因此,您的网址应为“ url:'dummy ='+ dt.getTime()+'&amp; var1 ='+ $ textbox1.val()” 希望这可以帮助你。

答案 1 :(得分:0)

发布数据类型必须是application / x-www-urlencoded,如果在php中使用$ _POST函数。

HTTP  /yourURI  HTTP/1.0
Content-Length:xxx
Content-Type:application/x-www-urlencoded
Connection:clsoe

name=&value=derp%40derpp.com&pk=23

无法将对象发布到Server,因为正文......

HTTP  /yourURI  HTTP/1.0
Content-Length:xxx
Content-Type:application/json
Connection:clsoe

{name: "", value: "derp@derpp.com", pk: 23}

答案 2 :(得分:-2)

修订后的查询...如果您有基于整数的值,则无法引用;

$query = "UPDATE users SET email = '".$_POST['value']."' WHERE id = ".$_POST['pk'];

或使用字符串替换

$query = "UPDATE users SET email = '{$_POST['value']}' WHERE id = {$_POST['pk']}";