我正在尝试在ajax之后加载页面的一部分...所以我在基于返回的数据后在java脚本中使用此代码:
var getPrice = $(this).closest('li');
var price = getPrice.next();
var id = $(this).attr('data-id');
$.ajaxSetup({
url: "do_cart_actions.php?action=qty",
type: 'POST',
data: data,
success: function(data) {
var result = jQuery.parseJSON(data);
if(result.good == 1) {
price.fadeOut('fast', function() {
price.load('show_cart.php .item_price_'+id, function() {
price.fadeIn('fast');
});
});
}
}
});
$.ajax();
我的php文件返回:
echo '{ "good":"1" , "qty":"'. $_POST['a'] .'" }';
当我尝试这个时,chrome会返回以下错误:
Uncaught SyntaxError: Unexpected token <
奇怪的是,代码与fadeOut
一起工作,如果我删除.load
也可以使用fadeIn
....如果删除var result
并返回一个数字&#39; 2&#39;从我的PHP文件和修改我的JavaScript这样:
if(data == 2) {
price.fadeOut('fast', function() {
price.load('show_cart.php .item_price_'+id, function() {
price.fadeIn('fast');
});
});
}
现在,一切都运转良好。所以我唯一的理论是,可能存在load方法和jQuery.parseJSON
的问题有什么想法吗?
答案 0 :(得分:4)
第一次在您的PHP .. 相反
echo '{ "good":"1" , "qty":"'. $_POST['a'] .'" }';
你很容易使用json函数:
echo json_encode(array('good'=>1,'qty'=>$_POST['a']));
在您的javascript第二位:
success: function(data) {
var result = jQuery.parseJSON(data);
您不需要解析数据,因为它已经是JSON格式。
为了确保在你回复json_encode之前你可以添加PHP代码和json标题:
header('Content-Type: application/json');
!!!附: !!!
请勿使用ajaxSetup来处理您的请求!它会影响你做的任何下一个ajax请求,这可能会成为一个问题!
答案 1 :(得分:1)
这是什么?
price.load('show_cart.php .item_price_'+id, // ...
为什么要将路径与PHP文件和CSS选择器结合起来?
我可能猜测它会尝试加载给定的网址,如show_cart.php .item_price_3
,找不到这样的页面(显然),返回带有404错误的HTML页面,由于标记打开{{1,因此未被解析为JSON }}。打开开发人员控制台<
标签,您会看到网址不正确,提出错误请求。
另外,为什么使用Network
?对于特定的AJAX调用,您应该使用:
$.ajaxSetup
});
另请注意,最新的jQuery版本中不推荐使用$.ajax({
url: "do_cart_actions.php?action=qty",
type: 'POST',
data: data,
success: function(data) {
var result = jQuery.parseJSON(data);
if(result.good == 1) {
price.fadeOut('fast', function() {
price.load('show_cart.php .item_price_'+id, function() {
price.fadeIn('fast');
});
});
}
}
。请改用success
处理程序。
答案 2 :(得分:1)
服务器端:
echo json_encode(array('good'=>1,'qty'=>$_POST['a']));
Clienti方面:使用 dataType
$.ajaxSetup({
url: "do_cart_actions.php?action=qty",
type: 'POST',
data: data,
dataType : 'json',
success: function(result) {
if(result.good == 1) {
price.fadeOut('fast', function() {
price.load('show_cart.php .item_price_'+id, function() {
price.fadeIn('fast');
});
});
}
}
});
答案 3 :(得分:0)
您是否尝试在console.log()中显示?
>后结果的内容
var result = jQuery.parseJSON(data);
以防万一有问题。