Я пытаюсь отправить array на мой контроллер для сохранения в базе данных, если в этом случае я сделаю array a string, он сохранится в базе данных.
поэтому, когда data: {'mapData' : arrayAllDrawings}, происходит сбой (arrayAllDrawings является массивом). Но когда это жестко закодировано как строка, подобная этой data: {'mapData' : 'string'},, она будет проходить и сохраняться в базе данных с помощью success message
Журналы ошибок от storage/logs, когда сервер выдает внутреннюю ошибку сервера 500
[2019-03-28 08:40:09] local.ERROR: Array to string conversion {"userId":1,"exception":"[object] (ErrorException(code: 0): Array to string conversion at C:\Users\Merlijn\AppData\Roaming\Composer\Laravel Projects\Forum\vendor\laravel\framework\src\Illuminate\Support\Str.php:354) [stacktrace]
Я попытался превратить массив JS в 1 длинную строку с помощью JS с .toString(), но все равно выдал ту же ошибку.
как выглядит массив JS, например:
2: Array(2)
0: "{"type":"Feature","properties":{},"geometry":
{"type":"Point","coordinates":[4.90694,52.385973]}}"
1: {type: "Name", Status: "Insert pointer name"}
length: 2
__proto__: Array(0)
3: "{"type":"Feature","properties":{},"geometry":
{"type":"Point","coordinates":[4.90694,52.385973]}}"
length: 4
код javascript ajax:
function saveInDb() {
if (typeof arrayAllDrawings !== 'undefined' && arrayAllDrawings.length > 0) {
$.ajax({
method: 'POST', said in the route
url: '{{ route('map.store') }}', gave in the route
data: {'mapData' : arrayAllDrawings},
success: function(response){
console.info(response);
},
error: function(jqXHR, textStatus, errorThrown) {
console.info(JSON.stringify(jqXHR));
console.info("AJAX error: " + textStatus + ' : ' + errorThrown);
}
});
} else {
alert('The map has nothing on it!')
}
}
контроллер:
public function store(Request $request)
{
// dd($request);
// $mapData = Input::get('mapData');
// dd($mapData);
if (request()->ajax()){
$mapData = Input::get('mapData');
$map = new Map;
$map->user_id = auth()->user()->id;
$map->map = $mapData;
$map->save();
return response()->json(['status' => 'succes', 'message' => 'saved in database','data' => $mapData]);
} else {
return response()->json(['status' => 'fail', 'message' => 'this is not json']);
}
}






Вы можете легко управлять этим, преобразовав массив в строку, используя:
json_encode($your_array); or serialize($your_array);
Обратно можно сделать:
json_decode($string); or unserialize($string);
что касается вышеуказанных функций использования.
Вы можете преобразовать массив javascript в json
JSON.stringify(arrayAllDrawings)
то вы можете получить это в виде json и преобразовать этот json с помощью
json_encode(json_decode($mapData,true));
а затем сохранить в базу данных.
Вы можете сохранить массив в БД, используя json_encode($mapData).