3

重複の可能性:
データの配列をphpからjavascriptに送信します

ajaxを含む配列をphpファイルに送信しています。配列は、データベースに保存する必要のある名前のリストです。sql_queryこれを再確認するために、phpファイルで作成されたものをエコーし​​ようとしました。しかし、応答は常にです

foreach()に無効な引数が指定されました。..

それで私はいくつかの解決策をSOで検索しました、そしてしばしば答えは「あなたの'配列'は配列ではありません」のようなものでした。そこで、phpに送信された配列をエコーし​​ました。これにより、渡されたすべての名前が1行で返されます(配列がphpファイルに到着することを意味すると思います)。

これが私のJSです...

var tourneyData = {
    tName : tourneyName,
    tNum : number,
    tNames : names, // this is an array
    tInt : international,
    tLig : liga,
    tStars : stars
};

$.ajax({
    type: "POST",
    url: "php/storeTourney.php",
    data: tourneyData,
    datatype: "json",
    success: function(response){
        alert("response " + response);
    }
});

...およびPHPコード

$tName = $_POST['tName'];
$tNum = $_POST['tNum'];
$tNames = $_POST['tNames'];
$tInt = $_POST['tInt'];
$tLig = $_POST['tLig'];

$insert = "";
foreach($tNames as $d){ // line pointed in the error message
    $insert += "INSERT INTO NAMES VALUES('test', '".$d."');";
}

echo $insert;

コードの何が問題なのか正確にはわかりません。foreach()明らかに配列である場合、-ステートメントで何が間違っている可能性があります$tNamesか?

4

4 に答える 4

2

データを配列として取得することをphpにヒントする必要があります。名前tNamesastNames[]

var tourneyData = {
    tName : tourneyName,
    tNum : number,
    'tNames[]' : names, // this is an array
    tInt : international,
    tLig : liga,
    tStars : stars
};

ここにある例:http: //api.jquery.com/jQuery.post/

より複雑なオブジェクトまたはn次元配列を送信する場合は、JSONの使用を検討する必要があります。{object: JSON.stringify(object)}JS側とjson_parse($_POST['object'])PHP側で使用できます。

于 2013-01-01T22:21:49.670 に答える
1

リクエストの形式が正しくないことに加えて、PHPが文字列として解釈するjavascript配列を送信しています。別のSOスレッドからコピーされたソリューション。

パスJavascript配列のガレス->PHP

JSON.stringify(array)を使用して配列をJavaScriptでエンコードしてから、$ array = json_decode($ _ POST ['jsondata']);を使用できます。PHPスクリプトでそれを取得します。

于 2013-01-01T22:16:40.157 に答える
0

JavaScriptにPOST変数名がありません:

(...)

$.ajax({
    type: "POST",
    url: "php/storeTourney.php",
    data: {"data":tourneyData},
    datatype: "json",
    success: function(response){
        alert("response " + response);
    }
});

次に、POSTされたデータに対してvar_dumpを試してください。

var_dump($_POST['data']);
于 2013-01-01T22:11:47.560 に答える
0

json_decode文字列をforeachしようとしているので、文字列を反復処理するために使用してオブジェクトに変換する必要があります。

$tNames = json_decode($_POST['tNames']);

参照: http: //php.net/manual/en/function.json-decode.php

于 2013-01-01T22:14:17.580 に答える