阿贾克斯后阵列(空)

问题描述:

我试图通过一个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();并检查所有数据是否到达控制器或不。 –

我不知道你正在使用的框架,但... 在你的后台方法似乎使用的是得到接收的数据,但与使用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);'不会被执行;出于这个原因,你不会看到你将发送到服务器的数据。 –

我不知道这是不是唯一的问题,但通过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