2012-02-16 13 views
1

は私のコードです: JS配列をPOST AJAX経由でPHPに渡すには?ここ

var var_ids = new Array(); 
var i = 0; 
jQuery("select").each(function() { 
var_ids[i] = jQuery("option:selected",this).val(); 
i++; 
} 

var $data = { 
action: "do_something", 
var_ids: var_ids, 
}; 
jQuery.post(doajax.ajaxurl, $data, function(response) { 
    alert(response); 

}); 

そして、私のPHPで

$ids = mysql_real_escape_string(trim($_POST['var_ids'])); 
exit(print_r($ids)); 

そして、それはちょうど...ゴミを返しだから私の質問はどのようにPHPを投稿するAJAX経由で配列を渡すのですか?

ありがとうございます。

+1

「ゴミ」を定義しますか?もしあなたが 'var_dump($ _ POST);'? – zerkms

+0

ええ、なぜ**完全に有効なコード**がうまくいかない理由を理解しようとするのではなく、すべてが汚い回避策を示唆し始めました;-) SOはとてもそうです;-) – zerkms

+0

何も私にとってはうまくいかないようでした.... hmmmm –

答えて

2

は、ほとんどの場合、あなたは、文字列関連機能trimとを適用するため、予期しない結果を得るmysql_real_escape_string限り、それは整数の配列だけであるように、アレイ$_POST['var_ids']

へ - あなたが必要とする唯一のmysqlサニタイズはintにキャストされます:

$ids = array_map('intval', $_POST['var_ids']); 
print_r($ids); 
+0

ええと、私は$ _POSTを受け取っているときはいつも、実際に何をしているのかを完全に知らないうちに浄化しています...本当に何を確認し、問題を引き起こす可能性のある不要な浄化を防ぐためにドキュメントをチェックする必要があります。 –

1

それがダウンして、サーバへのデータのパスアレイを題し道のdocs約1/4であります

var var_ids = new Array('10','12','13'); 
    var $data = { 
    action: "do_something", 
    'var_ids[]': var_ids, 
    }; 
    jQuery.post(doajax.ajaxurl, $data, function(response) { 
     alert(response); 

    }); 
+0

あなたの変更は意味をなさない – zerkms

+0

おそらくドキュメントを読んで、助けが必要かもしれませんか? –

+0

実際はそうです。彼がリンクしているドキュメントをチェックしてください。 –

1

...それは、配列をjson_encoded作り、その後、あなたは適切に)(配列をjson_decodeすることができます。

+0

そのようなひどいハックなしで動作します – zerkms

0

あなたは、あなたが$_POST['items']として、配列にアクセスすることができ、キーitems[]で各項目を投稿するか、またはあなたは、配列をシリアライズして送信し、PHP(PHP JSON.stringifyjson_decode)でアンシリアライズすることができます。

+0

この場合、無意味な2つの操作(シリアル化とシリアル化解除)を実行する正当な理由はありますか? – zerkms

2

$ _POST ['var_ids']はPHP側の例の配列です。配列ではなく文字列に対してのみtrimとmysql_real_escape_stringを呼び出すことができます。 $ postDataはトリムされエスケープされた値を持つPHP配列になりました。

+0

有用なコメントを見ることで、私は誰かが私の問題のために案内してくれることを願っています。ここに投稿してくださいhttp://stackoverflow.com/questions/10946728/sending-two-arrays-using-ajax-post-requestありがとう – KillABug

関連する問題