Laravel 中的 Ajax Jquery 未将值保存到数据库
Posted
技术标签:
【中文标题】Laravel 中的 Ajax Jquery 未将值保存到数据库【英文标题】:Ajax Jquery in Laravel not saving values to database 【发布时间】:2014-09-10 15:27:26 【问题描述】:我是 AJAX Jquery 的初学者。我的表单将包含用户选择的名为 dualistbox_demo1[] 的值数组。但是,似乎 ajax 函数没有将值存储到我的数据库中。
我在刀片模板中的表单:
Form::open(array('url' => 'schools/assign',"id"=>"demoform"))
<select multiple="multiple" size="10" name="duallistbox_demo1[]">
@foreach($user as $key => $value)
<option value=" $value->id"> $value->FirstName $value->LastName </option>
@endforeach
</select>
Form::submit('Submit', array('class' => 'btn btn-default btn-block'))
Form::close()
这是我的 js 脚本:
<script>
$("#demoform").submit(function()
$.ajax(
url: 'action',
type: 'POST',
data: ('[name="duallistbox_demo1[]"]').val(),
success : function(data)
console.log(data);
);
);
</script>
我的路线.php:
Route::post('/schools/assign', function()
if(Request::ajax())
$AC = new AccessControlEntry();
$AC->UserID = Input::get('duallistbox_demo1');
$AC->save();
);
我真的不知道我哪里/哪里出了问题。任何帮助是极大的赞赏!
【问题讨论】:
【参考方案1】:您正试图在 String 对象上调用 val
方法。缺少$
/jQuery
:
data: ('[name="duallistbox_demo1[]"]').val(),
除此之外,您还应该传递一个 identifier:value
对:
data:
'duallistbox_demo1': $('[name="duallistbox_demo1[]"]').val(),
由于val
用于多重选择返回一个数组,您可能需要调用join
方法将数组转换为字符串。
【讨论】:
我刚刚看了join方法,发现implode函数是join的别名。所以我添加了这些代码来将数组转换为字符串:$selectedadmins = $('[name="duallistbox_demo1[]"]').val(); $stringadmins = implode(",", $selectedadmins);
所以在我的 $.ajax 函数中,data: 'duallistbox_demo1': $('stringadmins'), ,
存储到数据库中仍然不起作用。我做错了吗?真的很难理解 Ajax jquery @undefined
@AnneTan data: 'duallistbox_demo1': $('stringadmins'), ,
不是我所建议的,您不能以这种方式传递 jQuery 对象,您应该将值作为字符串传递,将 jQuery 对象字符串化会导致“可以” t 将循环结构转换为 JSON”错误。以上是关于Laravel 中的 Ajax Jquery 未将值保存到数据库的主要内容,如果未能解决你的问题,请参考以下文章
Struts 2 操作未将所需结果返回给 Jquery Ajax 调用
使用 jQuery AJAX 从 Laravel 5 中的联系表单发送电子邮件