2

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が処理できる別の配列としてサーバーでこのように渡して、使用できるようにするにはどうすればよいですか?

それとも私は自分の人生を不必要に複雑にしているのでしょうか?私が欲しいのは、サーバーに配列を送信することだけです。

4

2 に答える 2

1

私はPHPにあまり精通していませんが、かなり単純なものを見落としているかもしれません<?--php unserialize($string) ?>

于 2012-06-19T03:46:28.863 に答える
1

変数[]の末尾に名前を付けると、その名前で渡された値から配列が作成されます。

たとえば、、はPHPで作成されhttp://www.example.com/?data[]=hello&data[]=world&data[]=testた配列になります。$_GET["data"] == array('hello', 'world', 'test');

同様に、PHPで連想配列を作成できますhttp://www.example.com/?data[first]=foo&data[second]=bar$_GET["data"] == array("first" => "foo", "second" => "bar");

ところで、クライアント側のシリアル化のニーズに合う場合は、 jQuery.serialize()またはを使用することに興味があるかもしれません。.serializeArray()

于 2012-06-19T00:17:22.470 に答える