【发布时间】:2013-01-15 07:02:03
【问题描述】:
我已经阅读了很多很多关于同一问题的问答,但没有一个是我的具体问题(至少不是我能找到的)。
我有一个回显 json 字符串的 php 脚本
header('Content-Type: application/json');
echo $result;
返回的JSON(用JSONLint检查并且有效):
{"Announcement":{"ID":1,"Type":1,"Text":"This is a test Albums announcement.","TimeStart":"1969-12-31","TimeEnd":"1969-12-31"}}
还有一个读取 json 的 web jquery 脚本:
$.ajax({
type : "GET",
url : "http://b***s.net/S****s/GetAnnouncements.php?callback=?",
data : {get_param : "Announcement"},
dataType : "json",
error : function(jqXHR, textStatus, errorThrown) {alert(errorThrown); alert(textStatus);},
success : function(data) {alert('success');
$.each(data, function(index, element) { alert('here');
$("#announcements-list").append("<li><a id='announcements-a-" + element.ID + "' href='#announcement-details'><p>" + element.Type + ": " + element.Text + "</p></a></li>");
$("#announcements-a-" + element.ID).bind('click', function() {Announcements.AnnouncementID = element.ID;});
});
$("#announcements-list").listview('refresh');
}
});
success: 永远不会被调用。而error: 返回一个textStatus 的"parsererror" 和errorThrown 是"Error: jQuery1830649454693285679_1359620502896 was not called"
- 我已将
callback=?添加到 url 以解决跨域问题。 - 我已将
header('Content-Type: application/json');发送到php,它返回NO html。 - 我已经用JSONLint 验证了 JSON 的有效性
- 我已经尝试删除
data: "json",正如一些答案所说,但仍然返回parsererror - 使用 jQuery 1.8.3
【问题讨论】:
-
@salmanA 是的,应该这样,我感到很尴尬......不过,不幸的是,这并没有改变结果...... :(
-
仅添加
callback=?不会自动解决跨域问题...服务器必须返回 JSONP 才能正常工作。 (否则它不会是一个安全功能。) -
@Juhana 现在已经提到了,我知道要搜索什么,现在正在将修改添加到我的 php 中。
标签: php jquery ajax json parse-error