2013-12-10 26 views
0

這個問題可能是重複的,但我很困惑,閱讀所有與此有關的帖子。(真誠的歉意!)基本上,我想發送一個JavaScript數組到PHP文件,並inturn寫入數組一個文本文件。我學會了使用JSON和AJAX的最佳方式。我的代碼顯示ajax部分的「成功」,並創建一個文件(php代碼),但是一個空文本文件。使用json發送javascript數組到php使用

$('#tabletomodify').on('change','.street', 
     function (event) 
     { 
       event.preventDefault();    
      var row=($(this).closest('tr').prop('rowIndex')); 
      var optionSelected = $("option:selected", this); 
       var valueSelected = this.value; 
      var ideSelected= this.id;    
      var values = [valueSelected]; 
      for ($i=3;$i<row;$i++) 
      {     
       var dv="selectstate"+$i; 
       var dv1=document.getElementById(dv).value; 
       var sl="selectstreet"+$i; 
       var sl1=document.getElementById(sl).value; 
       var po="selectbuilding"+$i; 
       var po1=document.getElementById(po).value; 
       var concat=dv1+sl1+po1; 
       values.push(concat);      
      }    
      JSON = JSON.stringify(values); 
      $.ajax({ 
      url: "get_buildings.php", 
       type: 'POST',    
       data: JSON , 
       success: function(){ 
       alert("Success!") 
       } 
      }); 

PHP代碼: -

<?php 
$json = $_POST['JSON']; 
$p = json_decode(JSON); 

$file = fopen('test.txt','w+'); 
fwrite($file, $p); 
fclose($file); 

echo 'success?'; 

>

+3

這看起來合適嗎? '$ p = json_decode(JSON);' – AbraCadaver

+0

另外,不需要在'JSON'上放大寫字母。聲明這樣的變量:'var json = JSON.stringify(values);' –

+0

謝謝..但仍然是一個空文本文件。任何其他錯誤? – user3070028

回答

2

兩個缺陷:

一)你沒有正確發送數據 - 它缺少一個字段名稱:

data: {data: JSON} 
     ^^^^---this will be the key in PHP's $_POSt 

b)您使用無效常量在PHP中,甚至沒有解碼傳入數據的可能性。你應該有:

$p = json_decode($_POST['data']); 
         ^^^^--matching what you have in the `data` field in Javascript.