2016-10-26 5 views
0

я хочу разбора JSON из JavaScript в PHP это мой яваскрипта кодкак разбор JSON данных из JavaScript в PHP

var Dataconvert; 
      var asetid = new Array(); 
      $("#simpanmodifikasi").click(function(){ 
       var table = $('#tableasal tbody'); 
       table.find('tr').each(function (row, input) { 
        // var coba = $(this).find('input'), 
        // asetid = coba.eq(0).val(); 
        asetid[row] = { 
         "asetid" : $(this).find('input:eq(0)').val(), 
         "namabarang" : $(this).find('input:eq(1)').val(), 
        } 
        Dataconvert = $.toJSON(asetid); 
        $.ajax({ 
         url:"<?php echo site_url('fixed/modification/tes');?>", 
         type:"POST", 
         data:Dataconvert, 
         dataType : 'json', 
         cache : false, 
         success:function(html){ 
          alert(html); 
         } 
        })       
       });     
      }) 

как разбор этого JSON в PHP ???, я новичок в JavaScript и JSON, я ценю вашу помощь

+0

В PHP службы, используйте 'json_decode()' – Tushar

+0

как этот json_decode (Dataconvert) ??? –

+0

'json_decode ($ _ POST ['data'])' – Tushar

ответ

0

Первый, вам нужно изменить $.toJSON(asetid) к JSON.stringify(asetid). Но, если вы каким-то образом хотите использовать $.toJSON(asetid), вам необходимо включить плагин jquery-json от http://code.google.com/p/jquery-json/ на вашей странице.

Второй, я думаю, что часть запроса ajax должна быть помещена вне функции итератора, в противном случае вы будете делать запрос ajax для каждой строки таблицы. Вот пересмотренный код:

var Dataconvert; 
 
var asetid = new Array(); 
 
$("#simpanmodifikasi").click(function(){ 
 
    var table = $('#tableasal tbody'); 
 
    table.find('tr').each(function (row, input) { 
 
     // var coba = $(this).find('input'), 
 
     // asetid = coba.eq(0).val(); 
 
     asetid[row] = { 
 
      "asetid" : $(this).find('input:eq(0)').val(), 
 
      "namabarang" : $(this).find('input:eq(1)').val(), 
 
     } 
 
    }); 
 
    
 
    //these should be outside the 'each' iterator 
 
    Dataconvert = JSON.stringify(asetid); 
 
    $.ajax({ 
 
     url:"<?php echo site_url('fixed/modification/tes');?>", 
 
     type:"POST", 
 
     data:Dataconvert, 
 
     dataType : 'json', 
 
     cache : false, 
 
     success:function(html){ 
 
      alert(html); 
 
     } 
 
    }) 
 
})

Третий, теперь ответ на ваш вопрос. Запрос ajax отправит стробированный JSON в тело POST. Пример:

[{"asetid":"10","namabarang":"Buku"},{"asetid":"30","namabarang":"Laptop"}] 

Чтобы прочитать его с PHP сторона (fixed/modification/tes скрипт), вы можете вручную читать из стандартного ввода и разобрать его с помощью json_decode.

<?php 
$data = json_decode(file_get_contents('php://input'), true); 
print_r($data); 
?> 

, что приведет к чему-то вроде этого:

Array 
(
    [0] => Array 
     (
      [asetid] => 10 
      [namabarang] => Buku 
     ) 

    [1] => Array 
     (
      [asetid] => 30 
      [namabarang] => Laptop 
     ) 

) 
+0

, будут ли результаты видны в консоли ??? –

+0

не в журнале консоли, если у вас действительно есть этот PHP-скрипт, вы сможете увидеть его в сетевом журнале вашего браузера. Я предполагаю, что вы захотите обработать $ data дальше в PHP, так что для иллюстрации только для того, чтобы дать вам представление о том, как выглядят данные в php. – elfan

+0

BTW, если вы хотите вернуть сообщение JS для предупреждения, вы можете заменить 'print_r ($ data);' с чем-то вроде 'echo json_encode (sizeof ($ data). 'Data received');'. В принципе, это должен быть действительный ответ JSON. – elfan

0

Попробуйте это поможет:

$data = json_decode(file_get_contents('php://input'); 

json_decode принимает закодированную строку JSON и преобразует его в переменную PHP.

и теперь вы можете получить доступ к таким переменным.

$firstVariable = $data -> var1; 
$secondVariable = $data -> var2; 
..... 
..... 
..... 
Смежные вопросы