【问题标题】:Getting json via ajax in a specific format通过 ajax 以特定格式获取 json
【发布时间】:2012-02-18 11:53:27
【问题描述】:

网页上的 javascript 函数需要以下格式的数据:

// Javascript
var data = [
            {"AKey" : "AVal", "BKey" : "BVal"},
            {"AKey" : "AVal", "BKey" : "BVal"},
            {"AKey" : "AVal", "BKey" : "BVal"}
];

目前,此变量已硬编码在 javascript 文件中,一切正常。 在第二步中,我想通过 jQuery 的 ajax 功能而不是使用硬编码变量从服务器请求数据来改进它,因为当然,直到现在,数据都是静态的。

所以我在我的服务器上放了一个文本文件,它包含:

// textfile on server
[
            {"AKey" : "AVal", "BKey" : "BVal"},
            {"AKey" : "AVal", "BKey" : "BVal"},
            {"AKey" : "AVal", "BKey" : "BVal"}
];

除此之外,还有一个 PHP 脚本。 PHP 脚本将其内容类型设置为 application/json 并打印文本文件。

在 Javascript 中,我尝试过这样的事情:

var jqxhr = $.getJSON("http://www.myserver.com/output.php", function() {
    alert("success");
})
.success(function() { alert("second success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });

jqxhr.complete(function(){ alert("second complete"); });

不幸的是,我只收到一个“错误”警报和两个完整的警报。

所以我有两个问题:

  • ajax 调用有什么问题,也许我应该以 text/plain 而不是 application/json 的形式传递数据?
  • 除了那些 Ajax 的东西:正如我上面提到的,一个特定的 javascript 函数需要一个格式为 var data = [ { "A" : "B:}, { "A" : "B:}]; 的变量/数据。此查询的结果(如果可以的话..)格式是否相同?

唯一的要求是我需要一个成功和一个错误处理程序,仅仅一个成功处理程序是不够的。

谢谢

【问题讨论】:

  • 谢谢,这些点是我只在stackoverflow上做的错别字,我删除了分号。还要别的吗?还是不行:(

标签: javascript jquery ajax json


【解决方案1】:

您通过跨域访问它,它违反了Same origin policy

follow this link to learn how to overcome this.

查看我对这个问题的回答 $.ajax call working fine in IE8 and Doesn't work in firefox and chrome browsers

并且您的 JSON 应采用以下格式。

[
   {"AKey" : "AVal", "BKey" : "BVal"},
   {"AKey" : "AVal","BKey" : "BVal"},
   {"AKey" : "AVal", "BKey" : "BVal"}
];

【讨论】:

  • 所有内容都位于“myserver.com”上,所以应该没有问题还是我错了?除此之外,它不适用于任何浏览器。
  • /output.php一样输入url,并像上面一样格式化JSON。
  • 好的,我根据您的帖子进行了相应的更改 - 但我删除了分号,我认为它不是有效的 JSON。当我通过 jsonviewer.stack.hu 直接从 myserver.com/out.php 加载我的 out.php 时,查看器确实可以呈现数据,所以我认为它是有效的。除此之外,它仍然不起作用。有什么方法可以找出 jquery 显示错误警报的原因吗?编辑:使用 chrome web 检查器,我发现 jquery 成功加载了带有 HTTP 200 和正确正文的 out.php ..
  • 谢谢,现在可以使用了!我的服务器上的 json 文本文件似乎存在缓存问题..
【解决方案2】:

JSON 是 JavaScript 的子集。虽然这

[
            {"AKey" : "AVal". "BKey" : "BVal"},
            {"AKey" : "AVal". "BKey" : "BVal"},
            {"AKey" : "AVal". "BKey" : "BVal"}
];

可能是Javascript,分号表示它是不是 JSON。此外,句号需要用逗号替换。

【讨论】:

  • 谢谢,这些点是我只在stackoverflow上做的错别字,我删除了分号。还要别的吗?还是不行:(
猜你喜欢
  • 2011-08-22
  • 1970-01-01
  • 2019-05-05
  • 1970-01-01
  • 2016-07-17
  • 1970-01-01
  • 2012-04-10
  • 2023-03-26
  • 2017-03-16
相关资源
最近更新 更多