如何将数组从Javascript发送到Laravel服务器?
我试图通过使用jquery(each)遍历每个表数据并将每个记录推送到一个数组中,来获取表中存在或不存在的学生人数,并将其发送到laravel服务器。我是编程新手。谢谢 这是我的Javascript:如何将数组从Javascript发送到Laravel服务器?,javascript,laravel,Javascript,Laravel,我试图通过使用jquery(each)遍历每个表数据并将每个记录推送到一个数组中,来获取表中存在或不存在的学生人数,并将其发送到laravel服务器。我是编程新手。谢谢 这是我的Javascript: $('#submitRollCall').click(function(e){ e.preventDefault(); let data = []; $('input').parents('tr').each(function(){ const roll
$('#submitRollCall').click(function(e){
e.preventDefault();
let data = [];
$('input').parents('tr').each(function(){
const rollCallObj = {};
rollCallObj.stdId = $(this).find('#stdId').val();
rollCallObj.rollCall = $(this).find("input:checked").val();
data.push(rollCallObj);
})
console.log(data)
$.ajax({
type:'POST',
url: '/rollCall',
beforeSend: function (xhr, type) {
if(!type.crossDomain) {
xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'));
}
},
data:{
'data': JSON.stringify(data)
},
success:function(data){
if(data) {
M.toast({html:'Roll-Call Successfully taken!'});
} else {
M.toast({html:'Not Success'});
}
console.log(data);
},error:function(xhr, status, error){
M.toast({html:"Pls Make sure to check each student"});
}
})
});
和我的控制器:
class RollCallController extends Controller
{
public function rollCallSave(Request $request)
{
$data = json_decode($request->input('data')) ;
$rollCall = new RollCall();
$rollCall->stdId = $data->stdId;
$rollCall->rollCall = $data->rollCall;
$rollCall->save((array)$data);
return response()->json(['data' => $data]);
}
}
我有“dd($data)”,它给了我以下信息:
array:10 [
0 => {#206
+"stdId": "10"
+"rollCall": "1"
}
1 => {#201
+"stdId": "9"
+"rollCall": "1"
}
2 => {#202
+"stdId": "8"
+"rollCall": "1"
}
3 => {#208
+"stdId": "7"
+"rollCall": "1"
}
4 => {#209
+"stdId": "6"
+"rollCall": "1"
}
]
这是我在尝试提交时遇到的错误:
{message: "Trying to get property 'stdId' of non-object", exception: "ErrorException",…}
exception: "ErrorException"
file: "C:\laravel\school\app\Http\Controllers\RollCallController.php"
line: 20
messag
e:“试图获取非对象的属性'stdId'”根据$data的转储,您需要使用一个循环:
public function rollCallSave(Request $request)
{
$data = json_decode($request->input('data')) ;
foreach ($data as $row) {
$rollCall = new RollCall();
$rollCall->stdId = $row->stdId;
$rollCall->rollCall = $row->rollCall;
// you don't need to pass $data here
$rollCall->save();
}
return response()->json(['data' => $data]);
}
从逻辑上讲,您的代码似乎很好,您在这里面临的问题是什么?因为
json\u decode
返回一个数组,所以在后面使用对象表示法。您可以使用数组语法:$rollCall->stdId=$data['stdId']代码>我尝试使用这个$rollCall->stdId=$data['stdId'];它返回未定义的索引“stdId”@Vincent Decaux谢谢@Vincent Decaux。这很有效。但是,如果我可以问一下,为什么我不需要传入“(数组)$data?”,因为您以前定义过模型的属性save()
只需保存之前定义的模型,它不需要任何参数。您可以使用RollCall::insert($row)代码>如果你也想要的话。