5

PJAXのドキュメントには、GithubがGistフォームの送信に$.pjax.submit()使用すると記載されています。Githubがうまく実装するajaxフォーム送信の望ましい機能は、URLがフォームから新しく作成されたURL(この場合は新しくサーバー側で作成された要点IDを含むURL)にリダイレクトすることです。action

たとえば、これから:

https://gist.github.com/gists //  form action

これに:

https://gist.github.com/tim-peterson/5019589 //assume this ID is generated server side

これは自分のサイトでも同様に機能するようになりました(つまり、ページ自体がhttps://gist.github.com/tim-peterson/5019589に相当するものにリダイレクトされます)が、URLをリダイレクトできません(https://gist.github.com/gists)。

これは完全にサーバー側の問題(ヘッダーの設定?)ですか、それともpjaxに欠けているものがありますか?今日ダウンロードしたバージョンのpjaxを使用しているので、バグのあるバージョンのpjaxを使用しているとは限りません。

4

3 に答える 3

2

$ .pjax.submit()を使用してこれを行うためのよりエレガントで適切な方法があるかもしれませんが、これは私が問題なく使用しているソリューションです。送信する前にフォーム入力をシリアル化してから、サーバーにPOSTします。次に、サーバーからの応答をチェックして、続行するためにPJAXを呼び出す前に、ユーザーが先に進むのを妨げる必要がないことを確認します。

$("#save").click(function(e) {

  e.preventDefault();
  dataString = $("#form").serialize();

  $.ajax({
    type: "POST",
    url: $("#form").attr("action"),
    data: dataString,
    dataType: "json",
    success: function(data)
    {
      // Handle the server response (display errors if necessary)

      $.pjax({
        timeout: 2000,
        url: data.url,
        container: '#main-content'
      });

    }
  });
});
于 2013-02-24T15:25:34.210 に答える