致电:
$.ajax({
type: "POST",
url: 'http://blahblah/cow.php',
contentType: "application/json",
data: {
'guid': '111',
'score': 592,
'initials': 'tod'
},
success: function (data) {
try {
//alert(data + " -- " + data.length);
if (data.length > 0) {
在我的php页面中执行此操作:
echo ('[{error : "' . $error . '", rank : "' . $usersRank . '", totalScores : "' . $totalScores . '"}]');
但JQ只是将此视为文本,并且不会将其视为JSON ......我做错了什么?
我已经尝试摆脱方括号(没有),使用json_encode - 但这是在我的变量中添加引号并且它仍然无法正常工作,尝试将标题(COntent类型)添加到php页面......唉!不能弄清楚这一点!
我是否需要致电DIE或类似的东西(有点像Response.end)?
答案 0 :(得分:2)
data
包含传输对象的responseText
的值。对于success
回调将其视为JSON,您需要将php页面上的content-type
标头显式设置为application/json
或ajax配置对象的type
属性为{{ 1}}。
或者,您可以使用json
,这是$.getJSON
的缩写。
答案 1 :(得分:1)
JSON要求引用键和值。你只引用了价值观。不要手动生成JSON。引入语法错误太容易了。让PHP为你做:
$data = array(
'error' => $error,
'rank' => $usersRank,
etc..
);
echo json_encode($data);
答案 2 :(得分:0)
您应该从contentType: "application/json"
电话中移除$.ajax
,并使用type: json
作为@ liho1eye建议。如果jQuery仍然抱怨你的json响应的格式,摆脱方括号,或者使用json_encode
,如@MarcB所说。
答案 3 :(得分:0)
我不知道我做错了什么,但我最后刚刚做了这个...我在ajax调用中停止使用php或dataType中的Content-type并且只是获取数据'string'并调用
var obj = jQuery.parseJSON(data);
然后执行我想要的内容。