试图让jquery.ajax识别我的PHP JSON

试图让jquery.ajax识别我的PHP JSON,php,jquery,json,Php,Jquery,Json,电话: $.ajax({ type: "POST", url: 'http://blahblah/cow.php', contentType: "application/json", data: { 'guid': '111', 'score': 592, 'initials': 'tod' }, success: functi

电话:

 $.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去掉方括号(什么都没有),但那是在我的变量中添加引号,但仍然不起作用,我试着在php页面中添加标题(内容类型)。。。啊!我想不出来


我是否必须调用DIE或类似的东西(类似于Response.end)?

JSON要求引用键和值。你只是引用了一些值。不要手动生成JSON。引入语法错误太容易了。让PHP为您做这件事:

$data = array(
   'error' => $error,
   'rank' => $usersRank,
   etc..
);

echo json_encode($data);

数据
包含传输对象的
响应文本
的值。要使
成功
回调将其视为JSON,您需要将php页面上的
内容类型
标题显式设置为
应用程序/JSON
,或者将ajax配置对象的
类型
属性设置为
JSON


或者,您可以使用
$.getJSON
,这是
$.ajax({dataType:“json”})
的缩写,您应该从
$.ajax
调用中删除
内容类型:“application/json”
,并按照@liho1eye的建议使用
类型:json
。如果jQuery仍然抱怨json响应的格式,请去掉方括号,或者使用@MarcB所说的
json\u encode

我不知道我做错了什么,但我终于做到了。。。我不再在php中使用内容类型,也不再在ajax调用中使用数据类型,而是直接获取数据“字符串”并调用

var obj = jQuery.parseJSON(data);

然后在上面执行我想要的操作。

{“错误”:“,“排名”:1,“总分”:9}--这是我使用您的代码返回的内容。。。查看我的int如何不在引号中。。?这可能就是为什么我的JQ仍然不能将其识别为JSON?数字不必被引用,但所有字符串都可以。json_encode()不太可能生成语法错误的json字符串;echo json_编码($data);将没有长度的对象发送回的设置。。。?但是json_编码也不返回方括号?这是个问题吗?为什么是个问题?方括号将构造一个数组(一个实际的数组,而不是PHP所称的“数组”),在您的例子中,这个数组总是
。length==1
。你想在这里做什么?如果我把这个内容类型头放在我的php文件中,我会得到length=undefined…当我试图提醒数据只是说object。。。如果我尝试将数据类型设置为“json”,我会得到未定义的。。。使用.Net,我总是调用.ajax,键入:POST,然后就好了…:(我明白,但是为什么你需要
length
?你要检查的实际情况是什么?如果你只需要知道数据中是否有什么东西,那么
If(data)
就可以了。你的意思是
dataType
不是
type
type
在这种情况下仍然应该是
POST