使用json将javascript数组发送到php

时间:2013-12-10 19:34:03

标签: php ajax json

这个问题可能是重复的,但我读到与此相关的所有帖子时感到困惑。(真诚的道歉!)基本上,我想将一个javascript数组发送到一个php文件,并将该数组写入文本文件。我学会了使用JSON和AJAX的最佳方法。我的代码显示了ajax部分的“成功”,并且还创建了一个文件(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?';

&GT;

1 个答案:

答案 0 :(得分:2)

两个缺陷:

a)您没有正确发送数据 - 它缺少字段名称:

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

b)你在PHP中使用了无效常量,甚至没有解码MIGHT传入的数据。你应该:

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