0

私は、データベースからデータを取得してページを更新するために Ajax を必要とする小さなプロジェクトに取り組んでいます。データベースへのクエリはユーザーによってオンザフライで構築され、クエリ文字列はチェーンのように構築されます。たとえば、チェーンの最初のアイテムは次のアイテムに影響を与え、次のアイテムにも影響を与えます。したがって、事前に「知る」ことができない投稿変数のリストが作成されます。これは非常に簡単に達成できると思いましたが、そうではないことが証明されています。これが私の問題です。

.changed イベントを使用して、フォームを投稿する前にシリアル化しようとすると。空の文字列しか得られません。投稿変数をハードコーディングすると、すべてがうまく機能することに気付きました。足りないものはありますか?.changed には seralize メソッドがありませんか?

データを含むサーバーが別のドメインにあるため、CURL ブリッジも使用しています。私はそれが問題を引き起こしているとは思わない。それは私のイベントの選択に関係していると思います。

コードは次のとおりです。

    $('#selector').change(function() {
        $.ajax({
            type: "post",
            dataType: 'json',
            url: "/pages/curlbridge.php",
            data: $("#queryform").serialize(), //"select=all&date=2013"
            success: function(data)
            {
                console.log(data);
                var resultset = data;

            }
        });

HTMLを添付するように求められました。シンプルな形ばかりです

    <form id="selector">
        Select: <input type="text" id="select" />
        Date: <input type="text" id="date" />
    </form>
    <br />
4

2 に答える 2

1

#queryform が存在しないという@m1ketに同意しますが、単一の入力要素で serialize() を使用することはできないため、次の行は正しくありません:

    data: $(this).serialize(), //"select=all&date=2013"

おそらくあなたができることはこれです(これは #selector がその一部である形式ですべてのデータを取得します):

    data: $(this).closest('form').serialize(), //"select=all&date=2013"

編集

残念ながら、元の質問に投稿された HTML に注意を払っていませんでした。

多分スコープの問題?これは機能しますか:

$('#selector').change(function() {
    var formData = $(this).serialize();
    $.ajax({
        type: "post",
        dataType: 'json',
        url: "/pages/curlbridge.php",
        data: formData, //"select=all&date=2013"
        success: function(data)
        {
            console.log(data);
            var resultset = data;

        }
    });
});
于 2013-03-13T16:53:28.457 に答える
0

$("#queryform") は存在しません。jQuery は次のようになります。

$('#selector').change(function() {
    $.ajax({
        type: "post",
        dataType: 'json',
        url: "/pages/curlbridge.php",
        data: $(this).serialize(), //"select=all&date=2013"
        success: function(data)
        {
            console.log(data);
            var resultset = data;

        }
    });
});

また、ユーザーがキーを入力するたびに AJAX リクエストを送信したいので、.change() を使用していますか?

于 2013-03-13T16:37:56.877 に答える