使用json将javascript数组发送到php


Send javascript array to php using json

这个问题可能重复,但我在阅读所有与此相关的帖子时感到困惑。(真诚地道歉!)基本上,我想将一个javascript数组发送到php文件,并将数组inturn写入文本文件。我了解到最好的方法是使用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?';

?>

两个缺陷:

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

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.