jquery无法读取json响应(使用$ .post)

时间:2011-07-18 20:00:06

标签: jquery json http-post

我正在提交数据类型为json的发布请求。 我能够在fiddrel中看到json响应,但是jquery无法解析它。

这是我的代码:

$("#jsonTestCasePost").click(function(){
        var requestType = $("#requestType").val();
        $('#result').val(requestType);
        debugger;
        $.post("http://localhost/api/number/substract", {numberA:"32",numberB:"10"},
         function(data){
            debugger;
            $('#result').val(data);
         }, requestType);
});

这是我在fiddler中的原始回复文本。

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 15
Server: Jetty(6.1.11)

{"result":"22"}

在jquery done函数中,我看到以下值:

status: 0
statusTex: "", 
responses: {}
headers: ""

知道我在这里做错了什么吗? 感谢

4 个答案:

答案 0 :(得分:2)

您需要使用数据的结果属性:

$('#result').val(data.result);

答案 1 :(得分:1)

如果您正在执行cross browser请求,请使用jquery的ajax

$.ajax({
url:'http://localhost/api/number/substract',
type:'POST',
data:{numberA:"32",numberB:"10"},
dataType:'json',
async:false,
cache:false,
crossDomain:true,
success:function(data){
$('#result').val(data.result);    
},
error:function(jxhr){
console.log(jxhr.responseText);
}   

});

答案 2 :(得分:1)

根据要求,这是我的回答:

由于same origin policy,您可能成为限制的受害者。确保您的请求被发送到您的页面所在的同一服务器。例如,如果您要求http://localhost/api/number/substract,则您当前的请求页面必须位于http://localhost

答案 3 :(得分:0)

从同一台服务器发出请求解决了我的问题。感谢gilly3给你评论。