我需要在当前使用1.4.4的网站上迁移到jQuery 1.7.2。我有下面的ajax调用,在1.4.4中工作正常,但正在回击
<1.7>在1.7.2中。 (我认为这与.parseJSON()有更多关系,但我不确定。)没有从文字转换为[object
function ajax_update(table_value, key_value, value_value, newkey_value, newvalue_value, debug) {
$.ajax({
type: "POST",
url: "/index.php/ajax/updatepost/",
data: {
table: table_value,
key: key_value,
value: value_value,
newkey: newkey_value,
newvalue: newvalue_value
},
dataType: JSON,
success: function(data, textStatus){
var result = jQuery.parseJSON(data);
//both debug and flash going in two different directions
$("div#flash > p").text(result.message);
$("div#flash").removeClass().addClass("message").addClass(result.flavor).slideDown(500).delay(1200).slideUp(500);
if (debug == true) {
$("div#debugflash > p").text(result.debug);
$("div#debugflash").removeClass().addClass("message").addClass("information").show();
}
},
error: function(errorObj, textStatus, errorThrown){
$("div#flash > p").text(errorThrown);
$("div#flash").removeClass().addClass("message").addClass("error").slideDown(500).delay(1200).slideUp(500);
if (debug == true) {
$("div#debugflash > p").text(errorThrown);
$("div#debugflash").removeClass().addClass("message").addClass("information").show();
}
}
});
}
jsonlint.com中的json验证,是由调用json_encode(array)的php脚本生成的,如下所示:
{"message":"Updated field name with value ALAMO",
"flavor":"success",
"debug":"UPDATE `customers` SET `name` = 'ALAMO' WHERE `cust_id` = 'ALA100'"
}
接头:
HTTP/1.1 200 OK
Date: Tue, 01 May 2012 00:00:15 GMT
Server: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8r DAV/2 PHP/5.3.8 with Suhosin-Patch
X-Powered-By: PHP/5.3.8
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
MS-Author-Via: DAV
Content-Length: 177
Keep-Alive: timeout=15, max=96
Connection: Keep-Alive
Content-Type: application/json
非常感谢任何帮助。
答案 0 :(得分:3)
我认为这与此行有关
dataType: JSON
试试这个
dataType: 'json'
答案 1 :(得分:1)
jQuery 1.5重写了AJAX更加可扩展。请参阅http://encosia.com/jquery-1-5s-ajax-rewrite-and-asp-net-services-all-is-well/传递给成功函数的数据可能已经JSON.parse()
。
答案 2 :(得分:0)
我认为您的错误可能与此行有关:
var result = jQuery.parseJSON(data);
尝试使用
alert(data);
在前一行上,以确保您的数据变量包含数据。