编辑:将$ .alert()更改为alert()
我有一个文件,planner.php,它使用JQuery向同一页面发送ajax请求。 使用调试器,我可以看到php正确获取请求,访问我的数据库,然后发送数据。然而,即使在发送它之后,我在javascript中也没有成功回调。怎么了?
JQuery的:
$(function()
{
$.post('planner.php', {"want": "keys"}, success_func, 'json');
});
function success_func(result)
{
//This is never called :(
alert("Worked");
}
PHP:
<?php
require_once "./php/couch.php";
require_once "./php/couchClient.php";
require_once "./php/couchDocument.php";
if (count($_POST) > 0 && array_key_exists("want", $_POST)) {
$couch_dsn = "http://localhost:5984/";
$couch_db = "subjects";
$client = new couchClient($couch_dsn, $couch_db);
header('Content-type: application/json');
$response = $client->getView('subject_views', 'keys');
echo json_encode($response); //This all seems to work fine
}
?>
就这么简单。所有的PHP代码都只是访问couchDB,你不必担心因为我知道$ response设置正确。
答案 0 :(得分:2)
了解ajax调用的位置或遇到错误
$(function()
{
$.post('planner.php', {"want": "keys"},function(){
alert( "success" );
})
.done(function(){
alert("second success");
})
.error(function(){
alert("error");
});
});
答案 1 :(得分:0)
这可能是因为没有$.alert()
这样的事情,而是使用简单的alert()
。
此外,您的success_func
已在ajax调用下方声明,请在$.post();
之前将其移至
编辑:
声明函数,在执行之前无需键入它。
答案 2 :(得分:0)
你可以这样使用它可能是你的成功功能而不是调用
var data = 'want=keys';
$.post(
'planner.php',
data
).success(function(resp){
json = $.parseJSON(resp);
alert(json);
});
答案 3 :(得分:0)
感谢vivek给我一个方法来解决问题。
基本上我从根本上不明白php是如何工作的。发送POST响应的代码是页面的一半,所以PHP发回整个页面以及我编码的任何额外的json,然后JQuery尝试将这个html页面解析为json,失败,然后没有运行成功函数,因为它从未在其请求中成功。阅读this answer以获得更多见解
明显的解决方案是:
为了简单起见,我最终选择了#2选项。
谢谢大家!