【问题标题】:I'm unable to receive the json object sent from my servlet我无法接收从我的 servlet 发送的 json 对象
【发布时间】:2013-02-10 14:07:38
【问题描述】:
$(document).ready(function() {
        var path = null;
        console.log('${pageContext.request.contextPath}/loadfile');
        $.ajax({
              dataType: "json",
              url: '${pageContext.request.contextPath}/loadfile',
              success: function(data){
                $.each(data,function(index,obj){
                    console.log(obj.id);
                    alert('inside');
                    path = obj.path;
                });  
              }     
              });

这里 /loadfile 是返回 json 对象的 url,当我转到这个 url 时,我可以看到打印在 html 页面上的 JSON 对象,但是当我访问包含上述内容的页面时,我没有得到相同的结果javascript代码

【问题讨论】:

  • 您在开发工具中看到了什么?
  • console.log(data) 显示什么?
  • 他们在开发工具的网络选项卡中是否有任何请求,它的响应是什么?
  • 你的服务器是告诉浏览器它是 json 还是你假设浏览器只是神奇地知道?设置数据类型是 jQuery 是不够的。不仅console.log(data) 显示的内容和网络选项卡没有显示足够的数据,如果console.log(data) 显示数据,它是否显示可点击的可扩展对象或字符串?如果是后者,我刚才说的。

标签: java javascript jquery ajax servlets


【解决方案1】:

人们通常不会告诉他们的服务器给浏览器他们发送的 JSON 字符串将被解释为一个 json 对象。

尽管dataType:'json' 应该解决它,但并非总是如此。

在 PHP 中

header("Content-type: application/json");

ASP

Response.AddHeader('Content-Type', 'application/json');

做不到这一点,

success: function(data){
    if (typeof data!='object') data=$.parseJSON(data); // make sure it's an object

我不知道为什么 jQuery 没有修复它,但是响应标头,即使设置了 dataType:'json' 也可以显示为 application/x-www-form-urlencoded; charset=UTF-8 并且没有创建对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多