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

时间:2012-01-08 03:23:26

标签: php jquery json

致电:

 $.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)?

4 个答案:

答案 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);

然后执行我想要的内容。