2014-11-19 3 views
0

У меня есть метод службы WCF:Вызов метода вебсервис через AJAX

[WebInvoke(Method = "POST", UriTemplate = "validateLogin", ResponseFormat = WebMessageFormat.Json,RequestFormat=WebMessageFormat.Json,BodyStyle=WebMessageBodyStyle.Bare)] 
[OperationContract] 
bool validateLogin(Login objLogin); 

Я называю этот метод через мой PhoneGap код AJAX, как:

var parameters = { 
    "EmailID": EmailID, 
    "Password": Password 
}; 

$.ajax({ 
    url: "http://localhost:95/MobileEcomm/Service1.svc/validateLogin", 
    data: JSON.stringify(parameters), 
    contentType: "text/xml;charset=utf-8", 
    dataType: "json", 
    headers: { 
     SOAPAction: '' 
    }, 
    type: 'POST', 
    processdata: false, 
    cache: false, 
    success: function (Data) { 
     alert("asdsad"); 
    }, 
    error: function (response) { 
     var value = JSON.stringify(response); 
     alert("Error in Saving.Please try later."+value); 
    } 
}); 

Но метод обслуживания не вызывался.

На вкладке Сети это дает мне сообщение об ошибке:

enter image description here

А на консолях:

enter image description here

EDIT1:

Когда я изменить contenttyp к: области применения/json; charset = utf-8

enter image description here

+0

Я не уверен, что причина вашей проблемы, но учтите, что параметр 'processData' - примечание столица «D». –

+0

Доступна ли эта услуга, если вы вызываете ее через браузер или почтовый клиент? Получаете ли вы ответ. $ .Ajax только инициирует вызов, но кажется, что есть некоторая проблема в конце обслуживания. Кроме того, вы видели, правильно ли вы отправляете все параметры, если это требуется вашей службой. – Vatsal

+0

@RoryMcCrossan ohh благодарит ... но только одна ошибка из консоли была удалена этим (не удалось загрузить ...) ... Ошибка POST все еще там –

ответ

1

http://api.jquery.com/jquery.ajax/

crossDomain пункт в документе

Проверьте это, у отправить Междоменный Аякс. По умолчанию это запрещено.

+0

Перекрестный домен из-за разных портов, конечно ... –

1

Скорее всего, из-за параметров, которые вы передаете и возвращаете тип службы WCF. Метод должен возвращать Object вместо bool. .Net framework автоматически преобразует возвращаемый объект в строку JSON.

Service Side:

[WebInvoke(Method = "POST", UriTemplate = "validateLogin", ResponseFormat = WebMessageFormat.Json,RequestFormat=WebMessageFormat.Json,BodyStyle=WebMessageBodyStyle.Bare)] 
    [OperationContract] 
    Object validateLogin(String Email, String Password) 
     { 
      //Do your stuff return bool value 
     } 

AJAX вызова:

$.ajax({ 
    url: "http://localhost:95/MobileEcomm/Service1.svc/validateLogin", 
    data: function ({ 
       return JSON.stringify({ 
       Email: "[email protected]", 
       Password: "XXXXXXXXXX" 
       }); 
      }, 
    contentType: "text/xml;charset=utf-8", 
    dataType: "json", 
    headers: { 
     SOAPAction: '' 
    }, 
    type: 'POST', 
    processdata: false, 
    cache: false, 
    success: function (Data) { 
     alert("asdsad"); 
    }, 
    error: function (response) { 
     var value = JSON.stringify(response); 
     alert("Error in Saving.Please try later."+value); 
    } 
}); 
Смежные вопросы