我正在尝试学习如何将值从jquery传递给控制器并将其插入到数据库中,而不是在laravel 5.4中将值从表单传递给控制器但不幸的是我得到了这个错误:
POST http://x.x.x.x:x/addtable 500(内部服务器错误)。
这是我的刀片文件:SampleInsert.blade.php
{{csrf_field()}}
<input type="text" id="sample2" required>
<div>
<button type="button" class="button" onclick = "submit();"> SUBMIT</button>
<a href="{{ url ('/') }}"><button type="button" class="button"> Cancel</button></a>
</div>
jquery的:
function submit() {
var samp = Array();
samp[ 0 ] = 1;
samp[ 1 ] = 'a';
samp[ 2 ] = document.getElementById( "sample2" )
.value;
samp[ 3 ] = 2;
samp[ 4 ] = 3;
var sample = JSON.stringify( samp );
$.ajax( {
type: "POST",
url: '/addtable',
data: {
pSample: sample
},
success: function ( result ) {
alert( 'Success' );
alert( result );
}
} );
} //submit();
addtable controller:
public function addTable(){
$sample = json_decode(Input::get('pSample'));
$sample1 = $sample[0];
$sample2 = $sample[1];
$sample3 = $sample[2];
print_r($sample3);
print_r($sample);
}
提前谢谢你。
答案 0 :(得分:0)
<meta name="csrf-token" content="{{ csrf_token() }}">
和
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
答案 1 :(得分:0)
尝试这样的代码:
<meta name="csrf_token" content="{{ csrf_token() }}" />
然后,你需要发一个ajax请求,使用beforeSend方法。
$("#try").click(function(){
var url = $(this).attr("data-link");
$.ajax({
url: "test",
type:"POST",
beforeSend: function (xhr) {
var token = $('meta[name="csrf_token"]').attr('content');
if (token) {
return xhr.setRequestHeader('X-CSRF-TOKEN', token);
}
},
data: { testdata : 'testdatacontent' },
success:function(data){
alert(data);
},error:function(){
alert("error!!!!");
}
}); //end of ajax
});
<强>控制器:强>
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SampleController extends Controller
{
/**
* Receive data here
*
* @param Request $request
* @return Response
*/
public function addTable(Request $request) {
if ($request->isMethod('post')) {
//$request->input('field_name_here');
$sample = $request->input('pSample');
print_r($sample);
}
}
}
?>