我正在使用Wordpress 3和jQuery 1.4.2。 Firebug告诉我$ .parseJSON不是一个函数,我很难为什么。
任何建议都表示赞赏。
$(document).ready(function(){
$('#subscribe_form_submit').click(function(){
function updatePage(theResponse, textStatus, XMLHttpRequest){
theResponse = $.parseJSON(theResponse);
console.log(theResponse);
if(theResponse == "OK!"){
$('#subscribe').fadeOut('fast', function(){
$('#subscribe').html("<br /><h3 style=\"text-align:center;border:1px solid #fff;background-color:#d3eefe;padding:8px;\">Thanks!</h3><br /><br />");
$('#subscribe').fadeIn('slow');
});
}
else{
theResponse = $.parseJSON(theResponse);
console.log(theResponse);
}
}
var theData = $('#subscribe').serialize();
$.ajax({
type: 'GET',
url: 'http://www.foo.com/wp-content/themes/thesis_17/custom/subscribe.php?' + theData,
dataType: 'json',
success: updatePage(),
error: function(xhr, textStatus, errorThrown){
console.log((errorThrown ? errorThrown : xhr.status));
}
})
});
});
答案 0 :(得分:2)
我不确定为什么会收到该错误消息,但我认为这不是真正的问题。
您正在调用updatePage
函数,而不是将其放在对象中。删除名称后面的括号:
success: updatePage,
当您在执行AJAX调用之前调用该函数,并且没有任何参数时,您尝试解析的theResponse
参数未定义。
此外,当您在AJAX调用中使用json
数据类型时,您根本不需要解析数据,这已经在调用成功回调函数时完成。
答案 1 :(得分:1)
您在dataType:'json'
来电中添加了$.ajax
。这意味着jQuery将为您解析JSON。你也为什么两次打电话给$.parseJSON
?
此外,像Dick说你可以使用$.getJSON
简写。
$.getJSON('http://www.foo.com/wp-content/themes/thesis_17/custom/subscribe.php?' + theData, updatePage);
答案 2 :(得分:1)
除了上面的答案,你可能想尝试$.getJSON功能,让事情变得更容易/更短。