2

私はこのjqueryコードを持っています:

        var myarr = ["aa","ss","dd"];

        $.ajax({
            url: "proces.php",
            data: "arr="+myarr,
            type: "POST",
            success: function () {
                alert("data is send");
            }
        });

メッセージdata is sendが表示されますが、proces.phpファイルにはこのコードがあります

$str = '';
foreach ($_POST['arr'] as $k=>$v) {
    $str = $str.$v;
}

$hand = fopen("t.txt","w+");
fwrite($hand,$str);

ファイルにt.txtは何も書かれていません。どこが間違っているのか教えてください。

4

2 に答える 2

5

次のように送信できます。

$.ajax({
    url: "proces.php",

    data: 'arr=' + JSON.stringify({arr: myarr}),

    type: "POST",
    success: function () {
        alert("data is send");
    }
});

サーバー側では、次のように読み取ることができます。

$arr = jsondecode($_POST['arr']);

foreach($x in $arr->arr) {
   // stuff
}
于 2012-11-06T16:26:40.370 に答える
3

配列を文字列化して追加すると、次のようにarr=なります。

arr=1,2,3

しかし、HTTP 経由でデータの配列を送信する標準的な方法は次のとおりです。

arr=1&arr=2&arr=3

PHP には追加の要件があります。名前がで終わることが期待されます[]

arr[]=1&arr[]=2&arr[]=3

フォームでエンコードされたデータを自分で作成しようとしないでください。jQuery に任せましょう。デフォルトでは、配列の PHP スタイルのキー名を生成し、URI で特別な意味を持つ文字のために必要なエスケープを処理します (たとえば、データに が含まれている場合&)。

変化する:

data: "arr="+myarr,

data:{ "arr": myarr },

次に、PHP では$_POST['arr']配列になります。

于 2012-11-06T16:31:26.163 に答える