Error inserting apostrophe into component that uses Auto Complete

4

I'm having trouble inserting% of apostrophe% when I'm going to search for the ' component of AutoComplete .

Jquery

 $("#<%=txtHipotePai.ClientID%>").autocomplete({
     source: function(request, response) {

         $.ajax({
             url: '<%=ResolveUrl("../ws/AutoComplete.asmx/GetListaHipotese")%>',
             data: "{ 'prefixText': '" + 'pt-Br' +
                 "','idioma': '" + $("#<%=rblIdioma.ClientID%> :checked").val() + "'}",
             dataType: "json",
             type: "POST",
             contentType: "application/json; charset=utf-8",
             success: function(data) {
                 response($.map(data.d, function(item) {
                     return {
                         label: item.split('#')[1],
                         val: item.split('#')[0]
                     }
                 }))
             },
             error: function(response) {
                 alert(response.responseText);
             },
             failure: function(response) {
                 alert(response.responseText);
             }
         });
     },
     select: function(e, i) {
         $("#<%=hdfCodHipotesePai.ClientID%>").val(i.item.val);
     },
     minLength: 1
 });
    
asked by anonymous 24.11.2014 / 19:38

1 answer

3

The problem occurs because you are trying to generate Json from String concatenations, and the moment you concatenate a String containing simple quotes, Json breaks.

For example:

{ 'prefixText': 'pt-Br','idioma': 'aqui tem ' aspas simples' }

Note that the Json syntax above is corrupted.

It would be more productive to create a real object, then serialize to Json.

Example:

...
data: JSON.stringify({
    'prefixText': 'pt-Br',
    'idioma': $("#<%=rblIdioma.ClientID%> :checked").val()
}),
...

See if this works.

    
24.11.2014 / 20:27