2012-03-22 3 views
1

Мне нужно вызвать веб-службу из jQuery, когда я поставил точку останова, следующий код бьет, но не доходит до веб-службы ...... есть ли что-то не так с этим кодом?вызов веб-службы из jQuery

function searchItems() { 

$("#txtSectionName").autocomplete({ 
    source: function (request, response) { 
     $.ajax({ 
      url: "/DataService.asmx/SearchSections", 
      data: "{'searchTerm' : '" + $("#txtSectionName").val() + "'}", 
      dataType: "json", 
      type: "POST", 
      contentType: "application/json; charset=utf-8", 
      dataFilter: function (data) { return data; }, 
      success: function (data) { 
       response($.map(data.d, function (item) { 
        return { 
         value: item.Name 
        } 
       })) 
      }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 
       alert(textStatus); 
      } 
     }); 
    }, 
    minLength: 1 
}); 

}

+0

Данные, которые вы отправляете, не являются JSON. В JSON ключи и строковые значения должны быть заключены в двойные кавычки. Поэтому веб-служба может не обработать запрос. –

+0

@OP вы можете поделиться кодом метода веб-службы ... – Rafay

+0

спасибо за ответ ура Felix Kling и 3nigma, теперь он отлично работает ... извините за задержку – shanish

ответ

1

Данные неадекватны. jQuery позаботится о кодировании JSON. Просто сдайте объект:

 $.ajax({ 
      url: "/DataService.asmx/SearchSections", 
      data: {searchTerm: $("#txtSectionName").val() }, 
      dataType: "json", 
      type: "POST", 
      success: function (data) { 
       response($.map(data.d, function (item) { 
        return { 
         value: item.Name 
        } 
       })) 
      }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 
       alert(textStatus); 
      } 
     }); 
+1

jQuery не превратит это в JSON. Он создаст строку запроса, например 'searchTerm = value', а не JSON. –

+0

Не строка запроса, так как это запрос POST. Но вы правы, а не JSON. Я имел в виду вложенный url-код, который Rails, например, декодирует как хэш. Но это зависит от того, что у вас есть на стороне сервера ... – Blacksad

+0

спасибо Blacksad, теперь он отлично работает – shanish

1

у вас настроен веб-службы для приема запросов от перекрестных доменов, см CORS также попробовать использовать jsonp как dataType что может решить проблему ... и веб услуги обычно обслуживают GET запросов

+0

с URL-адресом в коде, это не crossdomain здесь – Blacksad