开发者

Callback function of ajaxSubmit doesn't fire

开发者 https://www.devze.com 2023-03-07 22:49 出处:网络
from File upload with jQuery and CodeIgniter (But no page refresh)@cbrandolino suggest me to use jQuery form plugin to solve my problem. It was working well except for one issue, the callbackfunction

from File upload with jQuery and CodeIgniter (But no page refresh)

@cbrandolino suggest me to use jQuery form plugin to solve my problem. It was working well except for one issue, the callbackfunction isn't fire as I expected.

Here's my modified code

++ Javascript ++

$('#send_button').live('click', function(){
    var options = {
        url: 'formHandle/add',
        success: function(){
            alert('something');
        }
        //I tried both function() or function(data) 
        //or a function created outside $(document).ready()
   开发者_运维技巧     //None of them works
    };
    $('#new_entry_form').ajaxSubmit(options);
})

++ Controller ++

function add(){
    $array = array(
        'title' => $this->input->post('title'),
        'description' => $this->input->post('description'),
        'content' => $this->input->post('content'),
        'start' => $this->input->post('start'),
        'due' => $this->input->post('due'),
        'price' => $this->input->post('price'),
        'promotion_price' => $this->input->post('promotion_price'),
        'website' => $this->input->post('website'),
        'author' => $this->input->post('author'),
    );

    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['overwrite'] = false;
    $config['remove_spaces'] = true;
    $config['encrypt_name'] = true;

    $this->load->library('upload', $config);
    if($this->upload->do_upload('picture')){
        $array['picture'] = $this->upload->file_name;
        $this->load->model('entry_model');
        $this->entry_model->insertEntry($array);
        echo 'true'; 
        //I tried $this->load->view, echo or return
        //none of them works
    }else{
        echo 'false';
    }
}

The file upload was working, the file was uploaded to the specific folder.

The data insertion was working, the data was inserted to the database as expected.

The only problem I have is the callback function.

Do you have any idea how to fix this? I need to show the result of data insertion.

Update:

Adding return false help me nothing. Still not working


write callback function in option, clearly written here

$(document).ready(function() { 
var options = { 
    target:        '#output2',   

    success:       showResponse  // post-submit callback 
 }; 

// bind to the form's submit event 
$('#myForm2').submit(function() { 
    // inside event callbacks 'this' is the DOM element so we first 
    // wrap it in a jQuery object and then invoke ajaxSubmit 
    $(this).ajaxSubmit(options); 

    // !!! Important !!! 
    // always return false to prevent standard browser submit and page navigation 
    return false; 
}); 
}); 

function showResponse(responseText, statusText, xhr, $form)  { 
    // for normal html responses, the first argument to the success callback 
    // is the XMLHttpRequest object's responseText property 

    // if the ajaxSubmit method was passed an Options Object with the dataType 
    // property set to 'xml' then the first argument to the success callback 
    // is the XMLHttpRequest object's responseXML property 

    // if the ajaxSubmit 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('status: ' + statusText + '\n\nresponseText: \n' + responseText + 
        '\n\nThe output div should have already been updated with the responseText.'); 
}


Your form has onsubmit="return false;" ??

0

精彩评论

暂无评论...
验证码 换一张
取 消