关于parsererror SyntaxError:意外的输入结束(带有Jquery& ajax的CI)

时间:2011-07-02 09:26:09

标签: jquery ajax codeigniter

我不明白这个错误。

我使用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,

2 个答案:

答案 0 :(得分:9)

此错误表示从您的网址返回的响应是而不是 JSON,尝试解析它时出错。

查看您的网络面板(更简单),或调整您的错误处理程序以查看服务器实际返回的响应,方法是查看responseText,如下所示:

$('#output_test').html('<h2>Error !!!!: ' + xhr.statusText +'</h2>'+thrownError);
alert(xhr.responseText);

答案 1 :(得分:0)

对我来说,我在Ajax请求中使用的PHP脚本有两个相同的“include”语句。这个PHP脚本生成了一个稍后要使用的XML字符串。

我删除了对“include”语句的第二个引用,此错误消失了。

希望能帮助别人!