0

我有一个使用单击来编辑 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 的插件中使用的。可以在此处找到文档

4

3 回答 3

1

您是否检查过您发送的数据实际上是在发布请求中。我会检查我是否使用了正确的 jquery 发布请求,例如 $.ajax({ type: 'POST', url: url, data: data, success: success, dataType: dataType });

仅发送帖子数据无济于事。此外,如果您没有传递任何虚拟值,例如 javascript.getTime 函数,那么使用它是一个好主意,因为有时 xmlhttp 对象不会将其识别为新查询。因此,您的网址应该是“ url:'dummy='+dt.getTime()+'&var1='+$textbox1.val() ”希望这对您有所帮助。

于 2012-12-11T08:17:51.733 回答
0

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

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

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

无法将对象作为正文发布到服务器...

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

{name: "", value: "derp@derpp.com", pk: 23}
于 2012-12-11T08:20:12.597 回答
-2

修改后的查询......如果你有一个基于整数的值,它不能被引用;

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

或使用字符串替换

$query = "UPDATE users SET email = '{$_POST['value']}' WHERE id = {$_POST['pk']}";
于 2012-12-11T08:34:24.293 回答