1

jQuery を使用$.postして php[from mysql] ファイル データからデータを取得すると、次のようになります。

data = [['12-25-2012',62],['12-26-2012',60]]

これを変数に割り当てると、次のように文字列として保存されます。

v1 = "[['12-25-2012',62],['12-26-2012',60]]"; [v1 = data]

しかし、私はこれを好きにする必要があります:

v2 = [['12-25-2012',62],['12-26-2012',60]];

文字列としてではありません。

より明確にするために、アラートv1およびv2で理解できます

アラートを出すときアラートをv2出すとき12-25-2012,62,12-26-2012,60v1[['12-25-2012',62],['12-26-2012',60]]

違いがあります、そして私はのようになりたいv1ですv2

4

5 に答える 5

1

$.post$.postのドキュメントに従って、jQuery 関数で取得するデータの種類を指定してみてください

PHPにこれを正確にエコーさせます

$data = "[['12-25-2012',62],['12-26-2012',60]]";
exit(0);

$.post("test.php", { name: "John", time: "2pm" },
 function(data) {
   process(data);
 }, 
 "JSON" //this will tell your calling post that the return data is to be considered JSON
);
于 2012-12-25T13:50:47.490 に答える
0

AJAXは文字列のみを転送できるため、(PHPの文字列への変換とJSの実際のデータへの)変換を自分で処理する必要があります(これは、例のようにデータを渡すことができないことを意味します:)data = [['12-25-2012',62],['12-26-2012',60]]。AJAX 呼び出しで使用される最も一般的な形式は JSON です。それでも、JSON は二重引用符のみを使用しているため、渡そうとしているデータは無効と見なされます。

仕事に使用できるように、データに適切なJSONフォーマットを使用することをお勧めします(二重引用符を使用)JSON.parse。ただし、データのフォーマットに行き詰まっている場合は、手を汚して、関数コンストラクター (または、さらに悪い使用eval):

var v1 = "[['12-25-2012',62],['12-26-2012',60]]"
var a = new Function("return " + v1); //constructs a new function from the given string, in this case returning the passed array
var data = a();

console.log(data);

MDN の JavaScript で JSON を使用する方法と、 eval などを使用してはいけない理由について読んでください。

PHP にはjson_encode、配列を渡すことができる非常に便利なメソッドもあり、自動的に有効な JSON に変換されます。

コンマで区切られたペアで構成される単純な文字列が必要な場合は、これを PHP で生成して、このように JavaScript に渡してみませんか?

于 2012-12-25T13:39:49.413 に答える
0

$.ajaxJSON を使用して予期される応答タイプとして設定するか、文字列を解析します

JSON.parse(v1);

@ m90 が指摘したように、一重引用符は JSON では有効ではありません。私はそれを逃した。文字列を解析する前に、適切な JSON に応答するように php ファイルを変更するか、一重引用符を二重引用符に置き換える必要があります。

于 2012-12-25T13:33:15.390 に答える
0

うまくいくかどうかはわかりませんが、これを試すことができるかもしれません:

v1=eval(data);

eval() は悪であることに注意してください。また、phpコードを変更して他の形式で送信し、これらをjavascript配列に追加することを強くお勧めします。

于 2012-12-25T13:43:35.813 に答える
0

これを使って ..

    var x= eval(v1);
     alert(x);
于 2012-12-25T13:50:34.267 に答える