Отправить POST запрос на Rest WS с JS - PullRequest
0 голосов
/ 31 марта 2012

Я пытаюсь отправить запрос REST в службу WCF с помощью JavaScript. Я попробовал сервис с клиентом .net, и он работает нормально это мой пример метода в сервисе wcf:

[OperationContract]
[WebInvoke(Method="POST", 
   ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
bool GuardarJuan(Persona persona);

Из JavaScript я попробовал эти методы:

function sendRequest3(){
var datos='{"IdPersona":2,"Nombre":"David BQ"}';
var parameters = JSON.stringify(datos);
        var req=$.ajax({
            url: 'http://localhost:8732/Design_Time_Addresses/RestTEST/GuardarJuan',
            type: 'POST',
            data: parameters,
            contentType: 'application/json',
            dataType: 'jsonp'
        });
    }

А также вот так:

function sendPost(){
    var url = "http://localhost:8732/Design_Time_Addresses/RestTEST/GuardarJuan";
    var persona={
        IdPersona: 2,
        Nombre: 'David BQ'
    };
    var parameters = JSON.stringify(persona);
    xmlHttp.open("POST", url, true);
    xmlHttp.setRequestHeader("Content-type", "application/json");
    xmlHttp.send(parameters);
    xmlHttp.onreadystatechange= function X()
        {

             if(xmlHttp.readyState == 4)
             {
                  alert(xmlHttp.responseText);
             }
        }

но ничего из этого не работает.
Это всегда дает мне ошибку 405 Метод не разрешен или 0x80004005 (NS ERROR FAILURE)

Спасибо

EDIT: Проблема решена .. Это была междоменная проблема. Я делал это с VS Server, поэтому я перешел на IIS и все работало нормально

1 Ответ

1 голос
/ 31 марта 2012

Во-первых, находится ли «Сервис» в том же домене, что и страница, с которой вы пытаетесь связаться с сервисом?

Во-вторых, если вы пытаетесь использовать JSONP, вы можете использовать только «GET», а не «POST», поскольку JSONP просто создает , который упаковывает ответ в somerndmethod (ответ) ... который выполняет ожидаемый код.

Вам может понадобиться использовать IIS / IISExpress и иметь как основное приложение, так и приложение wcf на одном и том же хосте: порт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...