0

私は永遠に見えるもののためにこれを理解しようとしてきました。私のPHPは正常に動作しています。例として、選択ドロップダウンから「Grove Bow」を選択すると、次のように返されます。

[{"wtype":"Grove Bow","was":"1.55","wcc":"5","wbdmin":"12","wbdmax":"37"}]

問題は、私が書いた.jsファイルの成功コールバック関数のデータを解析することです:

$.post("get.php",
    {w:wname},
    function(data) {
        was = data[1].was;
        wcc = data[2].wcc;
        wbdmin = data[3].wbdmin;
        wbdmax = data[4].wbdmax;
        console.log($.parseJSON(data));
    }
);

コンソールは、空の配列であると思われるものを返します。

[Object]
0: Object
length: 1
__proto__: Array[0]

$.parseJSON()を削除すると、コンソールは get.php ファイルによって投稿されたのと同じ結果を返します。

[{"wtype":"Grove Bow","was":"1.55","wcc":"5","wbdmin":"12","wbdmax":"37"}]

変数として格納しようとしたことからわかるように、配列のこれらの要素にアクセスする必要があります (心配する必要はありません。以前に .js ファイルの先頭で宣言しました)。

プリスハーフ!

4

4 に答える 4

1

Jquery.post() :

データ

タイプ: PlainObject または String リクエストとともにサーバーに送信されるプレーンなオブジェクトまたは文字列。

PlainObject: メソッドの通常の操作では、次のようなオブジェクトをそこに渡す必要があります。

{ 'someKey' : 'someVal' , 'sK2' : 'sV2' }
于 2013-03-23T01:31:26.973 に答える
0

コンソールはオブジェクトの配列を返します

そしてconsole.log($.parseJSON(data[0]));あなたにあなたの目的を与えるでしょう

さらに、次のようにデータにアクセスする必要があります。

var data=$.parseJSON(data);
var myObj=data[0];  
var was=myObj.was;  
var wcc=myObj.wcc;  
//and etc
//or just data[0].was, data[0].wcc

もちろん、コメントに記載されているように、parseJSON を手動で呼び出す代わりに、「json」データ型を使用するより良い方法

于 2013-03-23T01:00:38.960 に答える
0

オブジェクトのように文字列にアクセスしようとしています。

これを試して

$.post("get.php",
    {w:wname},
    function(data) {
        var json = $.parseJSON(data)[0];
        was = json.was;
        wcc = json.wcc;
        wbdmin = json.wbdmin;
        wbdmax = json.wbdmax;
    }
);
于 2013-03-23T01:00:59.417 に答える
0

jQuery ajax 部分は問題ないようです。コールバック関数で純粋な Javascript を試してください。

function(data) {
   var json = JSON.parse(data);
   console.log(json.wtype); //Grove Bow
   console.log(json.was); //1.55
   //and so on...
}
于 2013-03-23T07:44:32.280 に答える