【问题标题】:jQuery json data works fine from a file but not from php web servicejQuery json 数据可以从文件中正常工作,但不能从 php Web 服务中正常工作
【发布时间】:2012-08-08 13:46:49
【问题描述】:

我有一个返回 json 数据的 php web 服务。我的问题是,当我从 url 调用 json 数据时什么都不返回,但是当调用具有完全相同数据的本地文件(从 url 复制)时工作正常。

我收到的json数据例如

{"ResponseData":[{"Code":"91010001","Description":"ISADORA ","retailprice":"52.0000000000"},{"Code":"91010002","Description":"ISADORA ","retailprice":"52.0000000000"}]}

我用来获取json数据的脚本是

     <script>$.getJSON("url",

    function(data){

                    var output = '';

      $.each(data.ResponseData, function(i,data){
         output += '<li><a href="#">' + data.Code + '</a></li>';
         if ( i == 50 ) return false;

      });
         $('#listview1').append(output).listview('refresh');
    });

 </script>

最后,我使用 ajax 脚本来显示 json 数据,但返回错误 [object Object]。

     <script>
 var obj 
  $.ajax({
url: 'url",
type: "GET",
dataType: 'json',
success: function( data ) {
  alert( "SUCCESS:  " + data );
},
error: function( data ) {
var obj = $.parseJSON(JSON.stringify(data));
  alert( "ERROR:  " + data );
}

});

你知道如何解决这个问题吗?

提前致谢

编辑:

希望这会有所帮助:在应用程序中,我首先使用函数 obj2json 将数据转换为 json,然后使用 json2obj 填充数据。

EDIT2: 在 IE9 中,我必须单击允许块内容(用于脚本或 Active X)才能显示来自链接的数据。我如何对其他浏览器执行此操作?

【问题讨论】:

  • 您真的不应该在查询字符串中传递 SQL 语句。您正在为 sql 注入攻击敞开大门。
  • 您的网址中是否有无效字符?
  • 我想我不确定问题是什么。你在哪里得到错误?您只是没有看到返回的数据吗?如果您使用 Chrome 工具或 Firebug 或 Fiddler 监控您的服务调用,您会看到哪些数据被返回?
  • 谢谢大卫。我删除了链接。我会用萤火虫试一试,我会告诉你的!!
  • 卢克,当我使用 Firefox、chrome 和 Internet Explorer 的链接时,它会返回我的数据。

标签: jquery json


【解决方案1】:

当您说“网络服务”而不是“本地文件”时,听起来您可能正在向不同的域发送请求。由于安全限制,浏览器不允许这样做。考虑让远程服务支持JSON-P进行跨站通信,或者通过你自己的服务器路由请求(即浏览器向你的服务器发送请求,你的服务器向远程服务器发送请求,你的服务器从远程服务器获得响应,您的服务器以相同的响应响应)。

【讨论】:

  • 我在一个月前为android制作了一个程序,在几天前制作了一个应用程序应用程序,我使用这个链接没有问题。我想我必须将数据作为字符串获取并将它们转换为 json。
  • @phanisk:Android 应用程序的安全限制与 Web 浏览器不同:/
  • 经过多次尝试,我现在确信存在安全限制。
【解决方案2】:

你需要使用JSON.parse(data)

 $.getJSON("url",
function(data){
               data = JSON.parse(data);
               var output = '';
              $.each(data.ResponseData, function(i,data){
     output += '<li><a href="#">' + data.Code + '</a></li>';
     if ( i == 50 ) return false;

  });
     $('#listview1').append(output).listview('refresh');
});

【讨论】:

  • jQuery的getJSON函数会自动提前解析data;无需重新解析。
  • @Matchu 是的,肯定 getJSON 工作正常,但我喜欢使用 JSON.parse,所以如果我有错误,我可以跟踪错误,所以如果它是 json 解析异常或 ajax 错误。
  • 好吧,但是我们不需要使用getJSON,因为这里的data是一个JSON对象,而不是一个字符串,所以JSON.parse会窒息:/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
  • 2021-11-23
  • 1970-01-01
相关资源
最近更新 更多