2011-07-21 9 views
0
function RejectItem(link, compqID, comments, officerID) { 
    if ($(link).parent().find("div.divComments").is(":visible")) { 
     $.ajax({ 
      type: "POST", 
      url: "../contentService.asmx/RejectComplianceItem", 
      data: "{ 'compqID': '" + compqID + "', 'comments': '" + $(link).parent().find("div.divComments").find('.taComments').val() + "', 'officerID': '" + officerID + "'}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(msg) { 
       hideRow(compqID); 
      } 
     }); 
    } else { 
     $(link).parent().find("div.divComments").show(); 
    } 
} 

($(link).parent().find("div.divComments").find('.taComments').val())は、この関数でシングルクォートの値を返すたびに失敗します。Ajaxを呼び出すと、単一引用符jqueryを置き換えます。

修正しますか?

答えて

2

JSONとして送信するデータをエンコードしますか?もしそうなら、あなたのJSONはとにかく有効ではありません。文字列とキーは二重引用符で囲む必要があります。

使用JSON.stringify[docs]

data: JSON.stringify({ 
    compqID: compqID, 
    comments: $(link).parent().find("div.divComments").find('.taComments').val(), 
    officerID: officerID 
}), 

JSON実装もhere可能です。

+0

を試してみてください? –

+0

@リチャード:オブジェクトをJSONとしてエンコードします。それを手動で構築するよりも、適切にエスケープすることができます。 –

+0

cool。それはjqueryの一部ですか、ブラウザに固有ですか? –

0

シングルクォートをエスケープします。このようなもの。

$(link).parent().find("div.divComments").find('.taComments').val().replace("'", "\'"); 
0

が、これは実際に何をするのか、この

function RejectItem(link, compqID, comments, officerID) { 
     if ($(link).parent().find("div.divComments").is(":visible")) { 
      var data = { 'compqID': compqID, 'officerID': officerID, 
        'comments': $(link).parent().find("div.divComments").find('.taComments').val()}; 

      $.ajax({ 
       type: "POST", 
       url: "../contentService.asmx/RejectComplianceItem", 
       data: data, 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function(msg) { 
        hideRow(compqID); 
       } 
      }); 
     } else { 
      $(link).parent().find("div.divComments").show(); 
     }   


    } 
関連する問題