我有一个jquery函数,它通过ajax执行更新
更新工作成功,(我可以在firebug网络响应中检查),但我无法获得响应消息,(通过警报或控制台)
这是我的代码片段...
$('#mcbatchsubscribe').on('click', 'a.ajaxresub', function (e) {
e.preventDefault();
var email = $(this).attr('emailvalue');
$.ajax ({
url: '/admin/ajax/ajax_resubscribe.php',
data: {email: email},
dataType: 'json',
success: function (json) {
console.log("success", json);
//alert(json)
}
} );
} );
如果我打开firebug,控制台什么都不返回, - 网络 Headers 显示正确的ajax路径和参数,网络响应显示ajax成功消息,'Resubscribed Success' - ajax页面的作用是运行列表订阅mailchimp上的电子邮件参数,这绝对有效 . 这是ajax片段......
...if ($rsemail->TotalRows > 0) { // Trigger if there is a matching row
$merge_vars = array(
'FNAME'=> $rsemail->getColumnVal("MemberFirstName"),
'LNAME'=> $rsemail->getColumnVal("MemberLastName")
);
$MailChimp = new \Drewm\MailChimp($api_key);
$subscriberesult = $MailChimp->call('lists/subscribe',
array('id' => $list_id,
'email' => array('email'=>$rsemail->getColumnVal("MemberEmail")),
'merge_vars' => $merge_vars,
'double_optin' => true,
'update_existing' => true,
'replace_interests' => false,
'send_welcome' => false
));
if ($subscriberesult ['email'] != $rsemail->getColumnVal("MemberEmail")) {
echo nl2br(($subscriberesult ['code'])."\r\n");
echo nl2br(($subscriberesult ['name'])."\r\n");
echo nl2br(($subscriberesult ['error'])."\r\n");
} else {
echo 'Resubscribed success';
}
} else {
echo 'Resubscribe failure - Email not found';
}
我想我正在取得进展
我改变了成功:函数(json)完成:function(json)
我现在得到了
对象{readyState:4,responseText:“Resubscribed success”,状态:200,statusText:“OK”}
1 回答
The problem
您的AJAX请求包含以下设置:
响应文本不是有效的
json
文本 . 当jQuery尝试将响应解析为json - >它失败并跳过success
回调...更多关于jQuery AJAX documentation
Solution (1)
从你的ajax参数中删除
dataType:'json'
- 这将阻止jQuery尝试将你的响应字符串解析为json
对象(并且这样做失败了......)OR
Solution 2
将服务器代码中的
responseText
更改为:这将通过jQuery的json验证,并且将调用您的
success
处理程序 .