PUT запрос к службе WCF Rest с использованием jquery ajax - PullRequest
0 голосов
/ 11 марта 2012

Привет у меня есть этот код на моем сервере:

[OperationContract]
    [WebInvoke(UriTemplate = "createinvoice", Method = "PUT")]
    public Invoice CreateInvoice(Invoice instance)
    {
        // TODO: Add the new instance of SampleItem to the collection
        try
        {

            string icode = instance.InvoiceCode;


            return new Invoice() {InvoiceCode = icode };
        }
        catch( Exception )
        {
            throw new NotImplementedException();
        }

    }

Теперь это на моей стороне клиента:

var instance = {};
    instance.InvoiceCode = "INV0004";
    //instance.AmountPaid = 1000;
    alert (JSON.stringify(instance));
    $.ajax({
        //cache:false,
        url : 'http://localhost/Mobile/POS/createinvoice/',
        data: JSON.stringify(instance),
        type: 'PUT',
        dataType: 'json',
        contentType: "application/json; charset=utf-8",
        processData: false,
        async:false,
        success: function(msg){
            alert(JSON.stringify(msg));
        },
        error: function(jqXHR, exception){
            alert("error "+ jqXHR.status);
        }
    });

Теперь, исходя из того, что я прочитал, метод PUT недобавить данные в сам URL.Теперь каждый раз, когда я запускаю его с помощью firebug, я вижу ошибку 404 Not Found.Я практически новичок в этом, так что на данный момент у меня нет никакой подсказки.метод get довольно прост по сравнению с этим.Можете ли вы помочь мне понять, что не так?СПАСИБО.

обновление

я просмотрел xhr на firebug и это было частью ответа (в html)

<p xmlns="">Endpoint not found. Please see the <a rel="help-page" href="http://localhost/Mobile/POS/help">service help page</a> for constructing valid requests to the service.</p>

Если я правильно его читаюговорит, что у меня что-то не так по фактическому запросу, который я делаю?и что либо формат неверный?

конец обновления

1 Ответ

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

Попробуйте, ResponseFormat = WebMessageFormat.Json

[OperationContract]
[WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,UriTemplate = "createinvoice", Method = "PUT")]
public Invoice CreateInvoice(Invoice instance){
   ***
}

EDIT

согласно документации jQuery put поддерживается не всеми браузерами.

Тип

По умолчанию: 'GET' Тип запроса («POST» или «GET»), по умолчанию "GET". Примечание. Другие методы HTTP-запроса, такие как PUT и УДАЛИТЬ, также можно использовать здесь, но они поддерживаются не всеми браузеры.

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