通过ajax以特定格式获取json

时间:2012-02-18 11:53:28

标签: javascript jquery ajax json

网页上的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:}];的变量/数据。这个查询的结果(如果它可以工作..)格式相同吗?

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

谢谢

2 个答案:

答案 0 :(得分:1)

JSON是JavaScript的一个子集。虽然这个

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

可能是Javascript,分号表示它是而不是 JSON。此外,期间需要用逗号代替。

答案 1 :(得分: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"}
];