0

jqGrid フォームを送信するときに、編集のユースケースのために、REST スタイルの URL に「/theRecordId」を追加したいと考えています。これは機能していません:

jQuery("#noteList").jqGrid('navGrid','#pager',
    {addtitle:"Add New Note", clearAfterAdd: true},
    {addCaption:"Edit Note", mtype:"PUT"
        ,onclickSubmit: function(rp_ge, postdata) {
            rp_ge.url = editurl + '/' + postdata.id;  }
     },

    {addCaption:"Add New Note", mtype:"POST"}, 
    {}, 
    {}, 
    {}
  );

これにより、"/[myurl]/undefined" がサーバーに送信されます ([myurl] は正しい初期 editurl です)。したがって、動的な URL 操作は機能しているように見えますが、「id」は未定義です。「id」プロパティの名前は何ですか? フォーム パラメータとして渡されているのは「id」であることがわかります。また、グリッドを表示するときに受信データに含まれる名前である noteId と、jsonReader.id に使用したものも試しました。どちらも機能しませんでした。この属性名の由来は?

4

1 に答える 1

2

古いバージョンの jqGrid 用に作成された例を使用した可能性があります。jqGrid の現在のバージョンは、値{gridid}_idのプロパティとして使用しidます。たとえば、id使用するグリッドの が のパラメータのid プロパティの名前であるnoteList場合。後でとを呼び出した、プロパティの名前が からに変更されることを理解することが重要です (コードの部分を参照)。noteList_idpostdataonclickSubmitonclickSubmitbeforeSubmitnoteList_idid

onclickSubmitのコードを次のように修正できます

onclickSubmit: function (options, postdata) {
    options.url = editurl + '/' + encodeURIComponent(postdata[this.id + "_id"]);
}

で文字が使用されている場合に URL が正しくエンコードされるように、JavaScript 関数のencodeURIComponentidの呼び出しを含めました。

于 2013-06-23T07:20:19.223 に答える