jQuery Ajax调用没有返回任何东西

时间:2014-08-14 15:48:05

标签: javascript jquery json rest slim

我在jQuery中有一个异步调用,其中一个POST请求返回一个HTTP 200,但是没有响应文本或任何可以从相关端点使用的东西。

我对我的Localhost上的原因感到困惑,因为当我使用相同的调用来轮询像JSONTest这样的服务时,我得到了一个有效的对象作为回报。

这就是结果端点的样子,使用Slim

在PHP中编写
$app->post("/search", function() use ($app) {
    try {
        $request = $app->request;
        $body = $request->getBody();
        $input = json_decode($body);

        //Prepare search string
        $query = "%". $input->query . "%";
        $grade = '%grade ' . $input->grade . "%";
        $meta = $input->meta;

        $proc_results = array();

        $item = new stdClass();
        $item->id = 1;
        $item->source = "source";
        $item->type = "lesson_plan";
        $item->description = "Description of the Lesson Plan";
        $item->date_created = 1234567890;

        $proc_results[] = $item;

        $app->response()->header('Content-Type','application/json');
        $app->response()->body(json_encode($proc_results));

        } catch (Exception $e) {

        }
    });

当使用像POSTMAN这样的实用程序时,此调用会返回JSON响应,但是当我使用以下测试jQuery代码时,我得到一个没有responseText的对象或我的解释器具有该对象的任何符号。

$.ajax({
    "type":"POST",
    "url":"http://localhost:9001/search",
    "data":{"query":"math","grade":"4"}
}).done(function(result) { 
    console.debug(result);
});

我在done()调用中缺少一个组件来轮询资源吗?我的Slim调用发送格式错误的JSON吗?如果需要,我可以在线获得一个有效的演示。

3 个答案:

答案 0 :(得分:0)

类型,网址,数据不应该是字符串。尝试不是字符串。它应该工作。数据的键也不应该是字符串。

试试这个

$.ajax({
    type:"POST",
    url:"/search",
    data:{query:"math",grade:"4"}
}).done(function(result) { 
    console.debug(result);
});

答案 1 :(得分:0)

尝试将数据类型设置为JSON,扩展@ doniyor的答案:

$.ajax({
    type:"POST",
    url:"/search",
    datatype:"json",
    data:{query:"math",grade:"4"}
}).done(function(result) { 
    console.debug(result);
})

请参阅:http://api.jquery.com/jquery.ajax/

从您的评论中可以看出,您正在寻找JSON。

答案 2 :(得分:0)

我找到了根本原因:我没有发送有效的JSON for PHP来解析。通过添加JSON.stringify,它会按预期响应:

$.ajax({
    type:"POST",
    url:"http://localhost:9001/search",
    dataType:"json",
    contentType: "application/json",
    data: JSON.stringify({"query": "math", "grade": "4", "meta": "z"}) 
}).done(function(result) { 
    console.debug(result);
});

感谢各位帮忙。