JQueryAjax呼び出しからサーバーのPHPスクリプトに送信したURLから配列を逆シリアル化しようとしています。
私がしたこと
私は次のようにjQueryAjaxを使用して、値を持つ変数をサーバーに正常に送信しています。
// A simple text from an HTML element:
var price = $("#price option:selected").val();
// Yet another simple text:
var term1 = $('#term1').val();
次に、次のようにAjax経由で送信するデータを準備します。
var data = 'price=' + price + '&term1=' + term1;
//if I alert it, I get this: price=priceString&term1=termString
そして、次のようにjQueryAjaxで送信します。
$.ajax({
url: "script.php",
type: "GET",
data: data,
cache: false,
dataType:'html',
success: function (html) {
// Do something successful
}
});
次に、次の方法でサーバーに取得します。
$price = (isset($_GET['price'])) ? $_GET['price'] : null;
$term1 = (isset($_GET['term1'])) ? $_GET['term1'] : null;
また、必要に応じて変数を簡単に使用できます。ただし、これは配列を使用して行う必要があります。
主な質問
たくさん読んで、私はなんとかアレイをサーバーに送信する専門的な方法を学ぶことができました:それをシリアル化してください!私はjQueryでそれを行うためにこの方法を学びました:
var array_selected = [];
// This is used to get all options in a listbox, no problems here:
$('#SelectIt option:not(:selected), #SelectIt option:selected').each(function() {
array_selected.push({ name: $(this).val(), value: $(this).html().substring($(this).html().indexOf(' '))});
});
var array_serialized = jQuery.param(array_selected);
// If I alert this I get my array serialized successfully with in the form of number=string:
//Ex. 123=stringOne&321=StringTwo
これは正しいようです。以前と同じようにこれをデータに追加します。
var data = 'price=' + price + '&' + array_selected + '&term1=' + term1;
//if I alert it, I get this: price=priceString&term1=termString&123=stringOne&321=StringTwo
サーバーでアレイを再構築(シリアル化解除)するにはどうすればよいですか?私は以前と同じことを試しました:
$array_serialized = (isset($_GET['array_serialized'])) ? $_GET['array_serialized'] : null;
成功しませんでした!なぜ何かアイデアはありますか?シリアル化された配列を、PHPが処理できる別の配列としてサーバーでこのように渡して、使用できるようにするにはどうすればよいですか?
それとも私は自分の人生を不必要に複雑にしているのでしょうか?私が欲しいのは、サーバーに配列を送信することだけです。