【发布时间】:2014-08-14 15:48:04
【问题描述】:
我在 jQuery 中有一个异步调用,其中一个 POST 请求返回一个 HTTP 200,但是没有响应文本或任何可以从相关端点处理的内容。
我对本地主机上的原因感到困惑,因为当我使用相同的调用来轮询 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?如果需要,我可以在线获取工作演示。
【问题讨论】:
-
服务器和客户端是否在同一个域/端口?
-
是的,都存在于测试PHP Server的端口9001上。
标签: javascript jquery json rest slim