试图让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
。