0

要素の名前を変更するように求め、入力した内容を通知する、かなり一般的な jQuery プロンプトがあるとします。

$(function () {
$("#rename").click(function () {
    jPrompt('Please Enter a New Name:', 'Enter new name...', 'Rename Prompt', function (r) {
        if (r) {
            alert('You entered ' + r);
        }
    });
});
});

しかし、名前を変更したい要素はサーバー上のデータベースに保存されています。つまり、この要素の名前を変更するには、サーバー側のスクリプトを実行する必要があります。これは、フォームと同じように送信を使用する必要があることを意味すると思います。ここで .submit() jQuery 関数に関する情報をいくつか見つけましたが、それがどのように機能するかを完全には理解していません。送信してからサーバー側のスクリプトを実行する方法を誰かが教えてくれたら、本当にありがたいです。

4

3 に答える 3

1
$(function () {
    $("#rename").click(function (e) {
        e.preventDefault();
        jPrompt('Please Enter a New Name:', 'Enter new name...', 'Rename Prompt', function (r) {
            if (r) {
                $('input[name="NewName"]').val(r.Name);
                $.post('@Url.Action("Edit", "TheController")', $('#hiddenform').serialize(), function(response) {
                    // response = ActionResult
                });
            }
        });
    });
});
  1. Url.Action正しい URI を取得するために使用します
  2. デフォルトのアクションをブロックするには、デフォルトの防止を使用します
  3. 成功/失敗を示すために、MVC3 アクションからある種の JSON を返します。
  4. 隠し場所を配置し、<form>投稿する情報を入力します
于 2012-06-04T13:28:01.777 に答える
0

AJAXを使用して、JavaScriptからサーバー側スクリプトにリクエストを送信することをお勧めします。詳細については、AJAXのjQueryAPIドキュメントを参照してください。

次のjPromptコールバックは、サーバー側スクリプトにHTTP POSTリクエストを発行し、リクエストとともに引数を渡しidますnewName$_POST['id']PHPでは、これらをとで取得します$_POST['newName']

function (r) {
    if (r) {
        $.post("rename.php", {
            data: {
                id: somethingToIdentifyTheElement,
                newName: r
            },
            success: function(response) {
                // Successfully renamed the element!
                // If your server-side script returned something interesting,
                // you can find it in the response argument
            }
        });
    }
}
于 2012-06-04T13:23:27.830 に答える
0

誰かが私に送信する方法を教えてくれたら、サーバーサイドスクリプトを実行していただければ幸いです。

このためには、サーバーサイド関数を呼び出すために、$。ajax()関数を使用する必要があります。

$.ajax({
  url: 'YourController\yourAction',
  type:'post'
  success: function(data) {
    $('.result').html(data);
    alert('Load was performed.');
  }
});
于 2012-06-04T13:23:39.507 に答える