我不明白这个错误。
我使用codeigneter和Jquery& ajax
Error parsererror
personEdit.php
$(document).ready(function(){
var options = {
dataType : 'json',
beforeSubmit: saveShowRequest, // pre-submit callback
success: saveShowResponse, //post-submit callback
error: function (xhr, ajaxOptions, thrownError){
//alert('Error !!'++ xhr.statusText);
//alert(thrownError);
$('#output_test').html('<h2>Error !!!!: ' + xhr.statusText +'</h2>'+thrownError );
}
// other available options:
//url: url // override for form's 'action' attribute
//type: type // 'get' or 'post', override for form's 'method' attribute
//dataType: null // 'xml', 'script', or 'json' (expected server response type)
//clearForm: true // clear all form fields after successful submit
//resetForm: true // reset the form after successful submit
//$.ajax options can be used here too, for example:
//timeout: 3000 };
$('#myEditPersonForm').ajaxForm(options);
});
// pre-submit callback
function saveShowRequest(formData, jqForm, options) {
// formData is an array; here we use $.param to convert it to a string to display it
// but the form plugin does this for you automatically when it submits the data
var queryString = $.param(formData);
// jqForm is a jQuery object encapsulating the form element. To access the
// DOM element for the form do this:
// var formElement = jqForm[0];
alert('About to submit: \n\n' + queryString);
// here we could return false to prevent the form from being submitted;
// returning anything other than false will allow the form submit to continue
return true;
}
// post-submit callback
function saveShowResponse() {
// if the ajaxForm method was passed an Options Object with the dataType
// property set to 'json' then the first argument to the success callback
// is the json data object returned by the server
//alert display
alert('SUCCESS exemple return respone');
//html display
$('#output_test').html('SUCCESS exemple return respone ');
}
ajax_post.php //是CI
function update_person(){
// set common properties
// run validation
// save data
$id = $this->input->post('id');
$person = array('name' =$this->input->post('name'),
'gender' =$this->input->post('gender'),
'dob' =date('Y-m-d', strtotime($this->input->post('dob'))));
$this->personModel->update($id,$person);
// set user message
$data['message'] = '<div class="success">update person success</div>';
}
$('#output_test').html('<h2>Error !!!!: ' + xhr.statusText +'</h2>'+thrownError);
alert(xhr.responseText);
警报(xht.responseText); 没关系 。它可以发送responseText(无错误)
为什么不能使用 成功:saveShowResponse,
答案 0 :(得分:9)
此错误表示从您的网址返回的响应是而不是 JSON,尝试解析它时出错。
查看您的网络面板(更简单),或调整您的错误处理程序以查看服务器实际返回的响应,方法是查看responseText
,如下所示:
$('#output_test').html('<h2>Error !!!!: ' + xhr.statusText +'</h2>'+thrownError);
alert(xhr.responseText);
答案 1 :(得分:0)
对我来说,我在Ajax请求中使用的PHP脚本有两个相同的“include”语句。这个PHP脚本生成了一个稍后要使用的XML字符串。
我删除了对“include”语句的第二个引用,此错误消失了。
希望能帮助别人!