Ajax无法读取JSON POST数据

时间:2016-06-19 21:01:24

标签: jquery json ajax laravel

我有这样的功能:

information = Event.where(name: 'xyz')

但是,Laravel无法读取我的JSON数据。 Laravel回来了:

information = Blog.where(name: 'xyz')

似乎我的数据(id_petugas和no_rek_pelanggan)没有被该函数读取。

我尝试将我的数据结构更改为:`

  1. model = Event "#{model}".where(name: 'xyz')
  2. 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{}; }); }
  3. 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))
  4. {'id_petugas':'1','no_rek_pelanggan':'11111'}
  5. 仍然没有奏效。但是当我尝试使用RESTful客户端时,它可以完美地工作。这是我的laravel控制器:

    {'id_petugas':1,'no_rek_pelanggan':11111}

    修改

    当我在其他函数上使用Dataform到JSON时,它也能正常工作:

    [{'id_petugas':1,'no_rek_pelanggan':11111}]

    编辑2 (解决了我自己的问题): 但是我将contentType更改为form-data

    [{'id_petugas':'1','no_rek_pelanggan':'11111'}]

2 个答案:

答案 0 :(得分:1)

您发送的是无效的JSON。您可以通过传递json验证器来证明这一点

你的单引号应该是双引号,反之亦然。

不要手动创建JSON。大多数语言都有序列化方法为你做

尝试

 data: JSON.stringify([{'id_petugas':'1','no_rek_pelanggan':'11111'}])

答案 1 :(得分:0)

Dunno如果这些是唯一的分数,但我只是注意到了:

  1. 在发送给Laravel的数据集中,还必须有CSFR令牌。这就是为什么我通常在身体之后立即将其作为隐藏输入并在每个ajax请求中使用它的值。

  2. dataType属性的正确格式为:{'id_petugas':1,'no_rek_pelanggan':11111}

  3. 对于其他人,我会xdebug该控制器来检查收到的有效数据。

    你是否也试过intval()那个ids?

    $Pemeliharaan->id_pegawai = intval(Request::input('id_petugas'));
    
相关问题