【问题标题】:jquery unable to read json response (using $.post)jquery 无法读取 json 响应(使用 $.post)
【发布时间】:2011-07-18 20:00:05
【问题描述】:

我正在提交一个数据类型为 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);
});

这是我在提琴手中的原始响应文本。

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: ""

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

【问题讨论】:

  • var requestType 包含什么? json?
  • 我正在创建一个允许选择 json 或 xml 的测试页面
  • 您是否向您的页面所在的同一台服务器发出请求?例如,如果您正在请求 http://localhost/api/number/substract,那么您当前的请求页面 URL 是否为 http://localhost
  • 不,我不是。在 localhost 下移动我的测试页面后,我能够看到正确的响应。谢谢..您介意发表您的评论作为答案吗?我浪费了整个上午的时间来调试这个。谢谢..

标签: jquery json http-post


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    根据要求,这是我的回答形式的评论:

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

    【讨论】:

      【解决方案3】:

      如果您正在执行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);
      }   
      
      });
      

      【讨论】:

      • 我认为jquery的$.post最后使用了$.ajax..不是吗?
      • post 是一个简写的 Ajax 函数,请看这里api.jquery.com/jQuery.post,但$.ajax 提供了更多选项,例如crossDomain
      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多