没有获得ajax查询到我的php页面的成功回调

时间:2014-01-25 12:43:09

标签: javascript php jquery ajax

编辑:将$ .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设置正确。

4 个答案:

答案 0 :(得分:2)

了解ajax调用的位置或遇到错误

 $(function()
 {
 $.post('planner.php', {"want": "keys"},function(){
  alert( "success" );
 })
 .done(function(){
    alert("second success");
  })
 .error(function(){
    alert("error");
  });
});

link:http://api.jquery.com/jquery.post/

答案 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以获得更多见解

明显的解决方案是:

  1. 为回复制作新页面
  2. 将php置于顶部 页。
  3. 为了简单起见,我最终选择了#2选项。

    谢谢大家!