0

これは、API のドキュメントのサンプル フォームです。これにより、開発者は json の結果 (この場合は/v1/get/profile/58呼び出し) を表示できます。もちろん、58は、変更できるようにする必要があるデフォルトの例の値にすぎません。そのため、フォーム アクションは例の整数を自動的に統合せず、代わりに、簡単に変更できるトークンとして機能する:id_user文字列を配置します。交換。

私が抱えている問題は、多くのフォーム (少なくとも 20) があり、正規表現を使用して検索と置換を実行する必要があることです。

<form action="/v1/get/profile/:id_user" method="GET" />
    <input name="id_user" id="id_user" value="58" /> User ID
    <input name="id_city" id="id_city" value="185" /> City ID
    <button type="submit">submit data</button>
</form>

観察、動的呼び出しのないアクションを持つフォームもあります。例:

    <form action="/v1/get/cities" method="GET" />

これは私がこれまでに試したことですが、正規表現の実装で迷っています。

$(document).ready(function(){
    $('form').submit(function(){
        if(regex-condition-is-found) { //pseudo-code for example purposes
            $(this).attr('action',this.attr('action').replace(:regex-needle, regex-replacement); //pseudo-code for example purposes
            }
    }); 
});

どんなアイデアでも大歓迎です。ありがとう!

4

3 に答える 3

2

これを試して:

$('form').submit(function(){

    var action = this.action;

    // replace values in action url for all inputs in the form
    $(this).find('input').each(function() {
        action = action.replace(':'+this.id, this.value);
    });

    this.action = action;

}); 

より一般的にするには、URL を介してテキストエリア データを送信する必要はほとんどありませんが、インクルード、選択、およびテキストエリアも使用できます。$(this).find('input, select')

また、URL に同じ値が複数回出現する可能性がある場合は、そのreplace()行を次のように置き換えることができます。

while(action.indexOf(':'+this.id) !== -1) action = action.replace(':'+this.id, this.value);
于 2013-05-27T17:06:37.810 に答える
0

最初にフォームと送信ボタンの ID を指定します

<form id="form_id" action="/v1/get/profile/:id_user" method="GET" />
    <input name="id_user" id="id_user" value="58" /> User ID
    <input name="id_city" id="id_city" value="185" /> City ID
    <button id="submit1_id" type="submit">submit data</button>
</form>

このようなことを行うと、必要な数の ajax 検索関数を定義でき、それぞれが ID によって異なる検索ボタンに応答します。

function searchOne() {
    var paramStr = $('#form_id').serialize();
    $.ajax({
        url: './script.cgi',
        dataType: 'json',
        data: paramStr,
        success: function(data, textStatus, jqXHR) {
            processJSON(data);
        },
        error: function(jqXHR, textStatus, errorThrown){
            alert("Failed to perform gene search! textStatus: (" + textStatus +
                  ") and errorThrown: (" + errorThrown + ")");
        }
    });
}

$(document).ready( function() {
    $('#submit1_id').click( function() {
        searchOne();
        return false; // prevents 'normal' form submission
    });
    $('#submit2_id').click(function() {
        searchTwo();
        return false;  // prevents 'normal' form submission
    });
    $('#submit3_id').click(function() {
        searchThree();
        return false;  // prevents 'normal' form submission
    });
}

最後に必要なのは、返されたデータを処理する processJSON 関数です。おそらく私はあなたがやろうとしていることを正確に理解していませんか?

于 2013-05-27T17:08:38.533 に答える