2014-11-20 3 views
0

У меня есть АЯКС вызов, как:Ajax не вызывая метод обслуживания через PhoneGap

$.ajax({ 
     type: "POST", 
     url: "http://localhost:95/MobileEcomm/Service1.svc/validateLogin", 
     crossDomain: true, 
     data:{ 'EmailID':EmailID, 'Password':Password}, 
     success: function (data) { 
     alert(data); 
      // do something with server response data 
     }, 
     error: function (err) { 
      // handle your error logic here 
      alert("Error"); 
     } 
    }); 

Я хотел вызвать:

[WebInvoke(
    Method = "POST", 
    BodyStyle = WebMessageBodyStyle.Wrapped, 
    ResponseFormat = WebMessageFormat.Json, 
    RequestFormat = WebMessageFormat.Json, 
    UriTemplate = "validateLogin/{Email}/{Password}")] 
     [OperationContract] 
     string validateLogin(string Email, string Password); 

Но я всегда идти в блок ошибок Аякса.

Что такое ошибка в моем вызове ajax?

Error1:

enter image description here

Ошибка 2:

enter image description here

+0

что такое ошибка ?? –

+0

Вы уверены, что приложение для телефонных разговоров может получить доступ к вашему серверу localhost: 95? –

+0

да, его обычный HTML код @VsevolodGoloviznin –

ответ

0

Пожалуйста, попробуйте добавить CONTENTTYPE в свой вызов

$.ajax({ 
     type: "POST", 
     url: "http://localhost:95/MobileEcomm/Service1.svc/validateLogin", 
     crossDomain: true, 
     contentType: 'application/json', 
     data:{ 'EmailID':EmailID, 'Password':Password}, 
     success: function (data) { 
     alert(data); 
      // do something with server response data 
     }, 
     error: function (err) { 
      // handle your error logic here 
      alert("Error"); 
     } 
    }); 
1

1) Есть много труднодоступных ошибки при запуске приложения ng некоторые или все его файлы по протоколу file://. Рекомендуется полностью отлаживать ваши приложения на http://. Если все URI с протоколом file:// связаны с эмулятором Ripple, см. Следующую точку.

2) Существует ограничение по имени Same-origin policy (CORS). Поскольку ваше приложение работает на localhost:58889, а вызываемый сервер находится на localhost:95, эти два считается различными серверами. Эмулятор пульсации имеет своего рода прокси-сервер, чтобы обойти CORS, попробуйте включить его. Я использовал также this Chrome extension с эмулятором Ripple успешно в прошлом.

Примечание: Статус: Не удалось и Типа: В ожидании не принадлежит CONTENTTYPE несовпадения, но 99% это проблема CORS.

+0

Как вы узнали, что приложение работает на 58889 ??? должен ли я обслуживать тот же порт? –

+0

Хром инструменты разработчика окна. Это либо сервер вашего приложения, либо сервер Ripple, и есть ответы на оба из них. –

Смежные вопросы