【问题标题】:About parsererror SyntaxError: Unexpected end of input (CI with Jquery&ajax )关于 parsererror SyntaxError: Unexpected end of input (CI with Jquery Ajax )
【发布时间】:2011-07-02 09:26:08
【问题描述】:

我不明白这个错误。

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

【问题讨论】:

  • 清理你的代码使其可读是我的第一步。

标签: jquery ajax codeigniter


【解决方案1】:

此错误意味着从您的 URL 返回的响应是不是 JSON,尝试解析它时出现错误。

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

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

【讨论】:

  • 在我的例子中,我只需要从我的请求中删除 dataType: 'json' 属性 - 服务器只是返回没有内容的 OK
【解决方案2】:

对我来说,我在 Ajax 请求中使用的 PHP 脚本有两个相同的“包含”语句。这个 PHP 脚本正在生成一个 XML 字符串以供以后使用。

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

希望对某人有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 2018-02-19
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    相关资源
    最近更新 更多