3

私はinsertStatusと呼ばれる JSON 値を返しています。次のように関数aftersubmitから取得したいと思います。

var addOptions = 
      
      { 
          closeOnEscape: true,
          width:500,
          url: 'addMember', 
          savekey: [true, 13],
          afterSubmit : function(response, postdata) 
          { 
              alert(response.insertStatus);
          },
          resize : false,
          closeAfterAdd: true
      };
  

ただし、「未定義」というメッセージを表示するだけです。

この値は、新しいレコードの挿入がデータベースに正常に保存されたかどうかを教えてくれるため、JSON として InsertStatus の値を取得しようとしています。ここから JSON 値を取得できない場合は、別のアプローチに従うべきでしょうか?

以前、別のタスクで errorText を使用しましたが、JSON 値を返す代わりに、カスタム エラー メッセージで HTTP エラー ステータスを返しました。どちらが最善のアプローチでしょうか? 2番目のアプローチの方が優れていたとしても、最初のアプローチの答えを知りたいです。ご協力いただきありがとうございます。

4

1 に答える 1

6

jqGrid のフォーム編集モジュールは、通常のコールcompleteバックのjQuery.ajax代わりに のコールバックを使用しsuccessます (ソース コードを参照)。したがって、afterSubmitコールバックの最初のパラメーター (responseパラメーター) はオブジェクトであり、jqGrid ドキュメントではjqXHR. の拡張子ですXMLHttpRequest。そのため、プロパティを使用responseTextしてサーバーからのプレーンな応答にアクセスする必要があります。サーバーがJSON文字列としてエンコードされたオブジェクトを返す場合、最初にinsertStatusJSON文字列を解析してからプロパティを取得する必要があります。の対応するコードは次のようになります。response.responseTextinsertStatusafterSubmit

afterSubmit: function (response, postdata) {
    var res = $.parseJSON(response.responseText);
    if (res && res.insertStatus) {
        alert(res.insertStatus);
    }
    // you should don't forget to return
    //     return [true, ""];
    // in case of successful editing and return
    //     return [true, "", newId];
    // with the Id of new row generated from the server
    // if you would use reloadAfterSubmit: false
    // option of editGridRow
}
于 2012-11-02T08:40:25.130 に答える