gpt4 book ai didi

php - Laravel:通过 AJAX 无表单发送数据到 Controller

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:34 24 4
gpt4 key购买 nike

我需要在单击按钮时通过 JS 将数据发送到 Laravel Controller 。我没有使用任何形式,因为数据是动态创建的。每次我尝试发送数据时,我都会收到内部服务器错误 (500),但无法在 Controller 或 laravel.log 文件中捕获该异常。

这是我正在做的:

路线:

Route::post('section/saveContactItems', 'SectionController@saveContactItems');

Controller :

public function saveContactItems($id, $type, $items, $languageID = "PT"){ ... }

JS:

$('button').on("click", function (evt) {

evt.preventDefault();

var items = [];
var id = $("#id").val();
var languageID = $("#languageID").val();
var data = { id: id, type: type, items: JSON.stringify(items), languageID: languageID };

$.ajax({
url: "/section/saveContactItems",
type: "POST",
data: data,
cache: false,
contentType: 'application/json; charset=utf-8',
processData: false,
success: function (response)
{
console.log(response);
}
});
});

我做错了什么?我怎样才能做到这一点?

更新:感谢@ShaktiPhartiyal 的 answer (和@Sanchit 的帮助)我能够解决我的问题。万一其他人遇到类似问题,在遵循@Shakti 的回答后,我无法访问 Controller 中的数据。因此,我必须在将数据发送到服务器之前将其字符串化:

data: JSON.stringify(data),

最佳答案

你不需要使用

public function saveContactItems($id, $type, $items, $languageID = "PT"){ ... }

您必须执行以下操作:

public function saveContactItems()
{
$id = Input::get('id');
$type = Input::get('type');
$items = Input::get('items');
$languageID = Input::get('languageID');
}

是的,正如@Sanchit Gupta 建议您需要随请求发送 CSRF token :

在 AJAX 中发送 CSRF token 的方法:

$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});

如果您使用这种方法,您需要像这样设置元标记:

<meta name="csrf-token" content="{{csrf_token()}}">

data: {
"_token": "{{ csrf_token() }}",
"id": id
}

更新

正如@Sanchit Gupta 指出的那样使用 Input facade:

use Input;

关于php - Laravel:通过 AJAX 无表单发送数据到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43214330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com