阿贾克斯后阵列(空)
我试图通过一个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);
}
谁知道我做错了什么?
我不知道你正在使用的框架,但... 在你的后台方法似乎使用的是得到接收的数据,但与使用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动词;
是的,我正在使用laravel。但是当我在chrome网络中调试我的ajax后,我的数组已经是空的 – user2942945
这个条件中的输出是什么?如果(valide){ console.log(psgDetails); //这是获取数据吗? ... }' –
也许你的命令行与'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);
}
});
}
仍然有同样的问题var postdata = {psg:passagers}; – user2942945
你怎么称呼getAssurance(),你如何注入passagers说法? –
首先返回Input :: all();并检查所有数据是否到达控制器或不。 –