2015-08-08 26 views
-1

我試圖通過一個Ajax調用但陣列我送張貼關聯數組總是空的(鉻網絡調試)阿賈克斯後陣列(空)

我的Ajax調用

function getAssurance(passagers) 
{ 
    console.log(passagers); 

    var postdata = JSON.stringify({psg:passagers}); 

    $.ajax({ 
     dataType: "json", 
     url: rootUrl + "/b2c/searchAssurance", 
     data: postdata, 
     type: "POST", 
     success:function(result) { 
      console.log(result); 
     }, 
     error: function (jqXHR, textStatus, errorThrown) { 
      alert(textStatus); 
     } 
    }); 
} 

數組是正確的,我的console.log()

我的路線

Route::post('/b2c/searchAssurance', '[email protected]'); 

我控制器

public function searchAssurance() 
    { 
     $search_data = Input::get('psg'); 

     log::error(print_r($search_data,true)); 

     echo "ok"; 
    } 

在哪裏我建立我的陣列

var valide = true; 
      var psgDetails = []; 

      if($("#country").val() == "-1") 
      { 
       valide = false; 
      } 

      if($("#state").val() == "0") 
      { 
       valide = false; 
      } 

      if($("#phone_0").val() == "0") 
      { 
       valide = false; 
      } 

      if(valide) 
      { 
       for(var i = 0; i<$("#nb").val(); i++) 
       { 
        var onePsg = []; 

        if(i==0) 
        { 
         onePsg['country'] = $("#country").val(); 
         onePsg['state'] = $("#state").val(); 
         onePsg['phone_0'] = $("#phone_0").val(); 
        } 

        if($("#title_"+i).val() == "0") 
        { 
         valide = false; 
        } 

        if($("#name_"+i).val().length < 1) 
        { 
         valide = false; 
        } 

        if($("#lastname_"+i).val().length < 1) 
        { 
         valide = false; 
        } 

        if($("#dob_day_"+i).val() == "Day") 
        { 
         valide = false; 
        } 

        if($("#dob_month_"+i).val() == "Month") 
        { 
         valide = false; 
        } 

        if($("#dob_year_"+i).val() == "Year") 
        { 
         valide = false; 
        } 

        onePsg["title"] = $("#title_"+i).val(); 
        onePsg['name'] = $("#name_"+i).val(); 
        onePsg['lastname'] = $("#lastname_"+i).val(); 
        onePsg['dob_day'] = $("#dob_day_"+i).val(); 
        onePsg['dob_month'] = $("#dob_month_"+i).val(); 
        onePsg['dob_year'] = $("#dob_year_"+i).val(); 

        psgDetails.push(onePsg); 
       } 
      } 

      if(valide) 
      { 
       console.log(psgDetails); 
       getAssurance(psgDetails); 
       $("#assurance").show("slow"); 
       $("#assuranceArrow").toggleClass('arrow-down arrow-up'); 
       $("html, body").animate({scrollTop: $('#assurance').offset().top }, 200); 
      } 

誰知道我做錯了什麼?

+0

你怎麼稱呼getAssurance(),你如何注入passagers說法? –

+0

首先返回Input :: all();並檢查所有數據是否到達控制器或不。 –

回答

0

我不知道你正在使用的框架,但... 在你的後臺方法似乎使用的是得到接收的數據,但與使用jQuery 發送數據:

 

    public function searchAssurance() 
     { 
      // HERE you should use "post" to receive the data in your framework 
      $search_data = Input::get('psg'); 
     } 

注意:如果您使用的是Laravel,我的回答是不正確的,因爲Input :: get用於所有HTTP動詞;

+0

是的,我正在使用laravel。但是當我在chrome網絡中調試我的ajax後,我的數組已經是空的 – user2942945

+0

這個條件中的輸出是什麼?如果(valide){ console.log(psgDetails); //這是獲取數據嗎? ... }' –

+0

也許你的命令行與'psgDetails.push(onePsg);'不會被執行;出於這個原因,你不會看到你將發送到服務器的數據。 –

0

我不知道這是不是唯一的問題,但通過AJAX發送之前不字符串化變量:

function getAssurance(passagers) 
{ 
    console.log(passagers); 

    //don't: var postdata = JSON.stringify({psg:passagers}); 

    $.ajax({ 
     dataType: "json", 
     url: rootUrl + "/b2c/searchAssurance", 
     data: postdata, 
     type: "POST", 
     success:function(result) { 
      console.log(result); 
     }, 
     error: function (jqXHR, textStatus, errorThrown) { 
      alert(textStatus); 
     } 
    }); 
} 
+0

仍然有同樣的問題var postdata = {psg:passagers}; – user2942945