所以我在论坛上搜索了类似的问题,不幸的是我找不到适合我的问题的答案。 我正在尝试使用以下代码在我的jquery中进行ajax调用;
function submitForm(formData)
{
$.ajax({
type: 'POST',
url: 'addEvents.php',
data: formData,
dataType:'json',
cache:false,
timeout:7000,
success: function(data){
$('#addEventsForm #response').removeClass().addClass((data.error === true) ? 'error' : 'success').html(data.msg).fadeIn('fast');
if($('#addEventsForm #response').hasClass('success')){
setTimeout("$('#addEventsForm')",5000);
}
},
error:function(XHR,textStatus,errorThrown)
{
$('#addEventsForm #response').removeClass().addClass('error').html('<p> There was an <strong>' + errorThrown +
'</strong> error due to <strong>'+ textStatus +'</strong> condition.</p>').fadeIn('fast');
console.log(arguments);
//alert(XMLHttpRequest.responseText);
},
complete:function(XHR,status)
{
$('#addEventsForm')[0].reset();
}
});
}
但是我收到了一个sysntax错误。我试过这样做,看看我在chrome中得到了什么错误
console.log(arguments);
但responseText
节点中的[Object, "parsererror" , SyntaxError]
似乎显示包含我插入记录的表单的页面的整个html。
我仍然在ajax中弄湿我所以我还不是专业人士,绝对理解错误信息及其含义。
答案 0 :(得分:0)
上面的js / jQuery代码是否位于addEvents.php
页面上 - 也就是说,在您发布AJAX的同一页面上? (换句话说,在同一个物理PHP页面上都是表单/ ajax和AJAX目的地?)
如果是这样,您将得到您所描述的内容:页面的整个HTML都会向您吐口水。
AJAX,根据设计,必须发布到服务器上的不同物理页面。这就是它的工作原理。
另外,FWIW,请注意dataType: 'json',
是指返回的数据,而不是发送的数据。也许你已经知道这一点,但这是一个常见的误解,值得一提。
编辑:
菲利克斯指出,这个答案在技术上并不完美。可以将AJAX代码发布到同一页面,但您必须明确允许这样做。也许FK或其他人可以编辑这篇文章来添加一个附加代码的例子?