2017-03-04 125 views
0

我是codeigniter的新手,這是我第一次使用jquery ajax。CodeIgniter上的JQuery AJAX:返回null的JSON數據類型

我有一個模式表單,將信息傳遞給視圖上的腳本。我的問題是,阿賈克斯是空值...
我試圖提醒腳本上的數據,它顯示正確的值,但是當它將數據作爲JSON傳遞給控制器​​時,我認爲這是失敗的地方。我不知道該怎麼辦。你有什麼主意嗎?在視圖

$(function() { //add new user from modal 
    $('#adduser_modal').modal('show'); 
    $('#adduser_modal').find('.modal-title').text('Add New User'); 
    $('#addUser_form').attr('action', '<?php echo base_url() ?>Hgv_controller/addnewuser'); 
}); 
$('#saveuser_btn').click(function() { 
    var url = $('#addUser_form').attr('action'); 
    $.ajax({ 
     type: 'ajax', 
     method: 'post', 
     url: url, 
     data: data, 
     async: false, 
     dataType: 'json', 
     jsonpcallback: success 
    : 
    function (response) { 
     if (response.success) { 
      $('#adduser_modal').modal('hide'); 
      $('#addUser_form')[0].reset(); 
     } 
    } 
}); 

這裏

片斷腳本的代碼片段從控制器

public function addnewuser() 
{ 
    $this->load->database(); 
    //load model for crud 
    $this->load->model('Crud'); 
    $result = $this->Crud->adduser(); 

    $msg['success'] = false; 
    $msg['type'] = 'add'; 
    if ($result) { 
     $msg['success'] = true; 
    } 
    echo json_encode($msg); 
} 

,這裏是從模型

使用 jsonpcallback
public function adduser() 
{ 
    $field = array(
     'username' => $this->input->post('hgv_username'), 
     'f_name' => $this->input->post('hgv_firstname'), 
     'l_name' => $this->input->post('hgv_lastname'), 
     'password' => $this->input->post('hgv_password'), 
     'user_type' => $this->input->post('hgv_type'), 
    ); 
    $this->db->insert('hgv_user', $field); 
    if ($this->db->affected_rows() > 0) { 
     return true; 
    } else { 
     return false; 
    } 
} 
+0

您是否試圖轉儲或打印您在模型中獲得的發佈數據?驗證 –

+0

或嘗試print_r($ this-> input-> post());出口;在您的控制器中加載您的模型以查看您是否在控制器中獲取數據 –

+0

1.'ajax'不是有效的http請求方法('type:'ajax''),2.'type'是別名對於'method',3.'async:false'使請求同步並阻止腳本/ UI,4. $ .ajax(...)'選項對象有語法錯誤(不必要的'jsonpcallback'屬性) – Andreas

回答

0

片段似乎不合適。試試這個

$('#saveuser_btn').click(function() { 
    var url = $('#addUser_form').attr('action'); 
    $.ajax({ 
     method: 'post', 
     url: url, 
     data: data, 
     dataType: 'json', 
     success: function (response) { 
     if (response.success) { 
      $('#adduser_modal').modal('hide'); 
      $('#addUser_form')[0].reset(); 
     } else { 
      alert('New User was not added.'); 
     } 
    } 

我也刪除了一些你可能不應該使用的ajax選項。 其餘的代碼看起來不錯,但是通過使用它你可以使你的控制器效率更高一點。

public function addnewuser() 
{ 
    $this->load->database(); 
    //load model for crud 
    $this->load->model('Crud'); 
    $msg['success'] = $this->Crud->adduser(); 
    $msg['type'] = 'add'; 
    echo json_encode($msg); 
} 

你的模型已經返回TRUEFALSE所以直接把那回報$msg陣列英寸

+0

謝謝,但我仍然得到相同的結果;它仍然以空值輸入數據庫。 –

+0

如何以及在哪裏設置var'data'的值? – DFriend