【发布时间】:2016-10-21 01:50:49
【问题描述】:
我有这样的功能:
function pemeliharaan(){
var petugas = document.getElementById('petugas').value;
$.ajax({
type: "POST",
url: "http://localhost/sipetan/WebService/public/api/pemeliharaan",
data: "[{'id_petugas':'1','no_rek_pelanggan':'11111'}]",
dataType: "json",
contentType: "application/json"
}).done(function() {
alert('Pemeliharaan dikirim ke database!');
}).fail(function() {
alert("Input yang anda masukkan salah!");
var r=confirm("Ulangi?");
if (r)
{
window.location = "/";
}
else{};
});
}
但是,Laravel 无法读取我的 JSON 数据。 Laravel 返回:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'id_pegawai' cannot be null (SQL: insert into `pemeliharaan` (`id_pegawai`, `no_rek_pelanggan`, `jenis`, `latitude`, `longitude`, `catatan`, `updated_at`, `created_at`) values (, , , , , , 2016-06-19 20:54:26, 2016-06-19 20:54:26))
该函数似乎没有读取我的数据(id_petugas 和 no_rek_pelanggan)。
我尝试将我的数据结构更改为:`
{'id_petugas':'1','no_rek_pelanggan':'11111'}{'id_petugas':1,'no_rek_pelanggan':11111}[{'id_petugas':1,'no_rek_pelanggan':11111}][{'id_petugas':'1','no_rek_pelanggan':'11111'}]
还是不行。但是当我尝试使用 RESTful 客户端时,它可以完美运行。这是我的 laravel 控制器:
$Pemeliharaan=new pemeliharaan;
$Pemeliharaan->id_pegawai=Request::input('id_petugas');
$Pemeliharaan->no_rek_pelanggan=Request::input('no_rek_pelanggan');
$Pemeliharaan->jenis=Request::input('jenis');
$Pemeliharaan->latitude=Request::input('latitude');
$Pemeliharaan->longitude=Request::input('longitude');
$Pemeliharaan->catatan=Request::input('catatan');
$success=$Pemeliharaan->save();
if(!$success)
{
return Response::json("error saving",500);
}
return Response::json("success",201);
编辑
当我在我的其他函数上使用 dataform 到 JSON 时,它也可以正常工作:
jQuery('form#postPemeliharaan').bind('submit', function(event){
event.preventDefault();
var form = this;
var json = ConvertFormToJSON(form);
var id_pemeliharaan;
$.each(json,function (name, value){
if(name=="id_pemeliharaan"){
id_pemeliharaan=value;
}
});
$.ajax({
type: "PUT",
url: "http://localhost/sipetan/WebService/public/api/pemeliharaan/"+id_pemeliharaan,
data: json,
dataType: "json"
}).done(function() {
alert('Pemeliharaan dikirim ke database!');
}).fail(function() {
alert("Input yang anda masukkan salah!");
var r=confirm("Ulangi?");
if (r)
{
window.location = "/";
}
else{};
});
return true;
});
EDIT 2(解决了我自己的问题): 但我将 contentType 更改为 form-data
function pemeliharaan(){
var petugas = document.getElementById('petugas').value;
var json = '[{"id_petugas":1,"no_rek_pelanggan":11111}]';
$.ajax({
type: "POST",
url: "http://localhost/sipetan/WebService/public/api/pemeliharaan",
data: [{"name": "id_petugas","value": 1},{"name": "no_rek_pelanggan","value": 11111},{"name": "longitude","value": 11111},{"name": "latitude","value": 11111},{"name": "jenis","value": 1}],
dataType: "json",
contentType: "application/x-www-form-urlencoded"
}).done(function() {
alert(petugas+' berhasil ditugaskan untuk melakukan pemeliharaan');
}).fail(function() {
alert("Input yang anda masukkan salah!");
var r=confirm("Ulangi?");
if (r)
{
window.location = "/";
}
else{};
});
}
【问题讨论】: