2016-06-19 2 views
0

을 읽을 수 없습니다. Laravel 반환 :아약스 나는이 같은 기능이 JSON POST 데이터

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'}]

  1. {'id_petugas':'1','no_rek_pelanggan':'11111'}
  2. {'id_petugas':1,'no_rek_pelanggan':11111}
  3. [{'id_petugas':1,'no_rek_pelanggan':11111}]
  4. 아직도 일을하지 :

    나는 변화를 내 데이터의 구조를 시도했다. 하지만 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); 
    

    편집

    난 내 다른 기능에 JSON에 DATAFORM을 사용하는 경우 그것은 또한 완벽하게 작동

    : 2 (내 자신을 해결

    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; 
          }); 
    

    편집 문제) : 하지만 content-type을 양식 데이터로 변경했습니다.

    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{}; 
          }); 
           } 
    
+1

가능한 복제 시도를 위해 그것을 할 수있는 대부분의 언어에서 직렬화 방법이 있습니다 http://stackoverflow.com/a/24497091/2159528 –

답변

1

잘못된 JSON을 보냈습니다. json 유효성 검사기를 통해이 사실을 증명할 수 있습니다.

작은 따옴표는 이중이어야하며 반대의 경우도 마찬가지입니다.

수동으로 JSON을 만들지 마십시오.당신이

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

이 문제를 변경 유형으로 form-data로 해결했습니다. 내 편집 2를 참조하십시오.하지만이 문제에 대한 진정한 MVP입니다. 오른쪽은'data : JSON.stringify ({ 'id_petugas': 1, 'no_rek_pelanggan': 11111})' –

+0

입니다. 왜 배열인지 궁금합니다. 그러나 더 나은 이해가 부족하여 구조를 문자열 화하는 방법을 보여주었습니다. – charlietfl

+0

okay . 고맙습니다. 좋은 하루 되세요. 신의 축복이있어! :) –

0

몰라이 유일한 점,하지만 난 그냥 눈치 경우 : 데이터에서

  1. 당신은 또한 CSFR 토큰이 있어야 Laravel에 보낼 설정합니다. 그래서 나는 보통 몸을 숨겨진 입력으로 즉시 포함하고 각 Ajax 요청에서이 값을 사용하는 것이다. {: 'no_rek_pelanggan'1 'id_petugas'11111}

  2. 당신의 데이터 유형 속성의 올바른 형식이있다

나머지 부분, 내가받은 유효 데이터를 확인하기 위해 해당 컨트롤러를 Xdebug는 것 .

또한 intval()을 시도 했습니까?

$Pemeliharaan->id_pegawai = intval(Request::input('id_petugas')); 
+0

어쨌든 장애인 CSFR 토큰이었다. intval을 사용하려고했을 때 0을 반환했습니다 .. –

+0

그리고 Request :: input ('id_petugas') 대신 $ request [ 'id_petugas']를 사용하면? 거기 뭐라구? – Alessandro

+0

$ request를 사용했을 때 laravel이 '배열 \ Illuminate \ Support \ Facades \ Request 형식의 객체를 배열로 사용할 수 없습니다.'를 반환했습니다. 내 편집 참조 –

관련 문제