вызов службы wcf 4.0 из jquery ($. ajax) - PullRequest
3 голосов
/ 07 февраля 2011

У меня есть простой сервис wcf, разработанный в vs2010

[ServiceContract]
public interface IService1
{

    [OperationContract]
    string GetData(int value);



    // TODO: Add your service operations here
}



public class Service1 : IService1
{
    public string GetData(int value)
    {
        return string.Format("You entered: {0}", value);
    }


}

, следующий вызов работает

    protected void Button1_Click(object sender, EventArgs e)
    {
        ServiceReference1.Service1Client p = new ServiceReference1.Service1Client();
        Label1.Text= p.GetData(5);
    }

, но когда я пытаюсь вызвать его из jquery, он не работает

    $(".test").live("click", function () {
    $.ajax({
                type: "post",
                url: "http://localhost/Service1.svc/GetData",
                data: {value:'1'},
                contentType: "application/json; charset=utf-8",
                timeout: 10000,
                processData: true,
                dataType: "json",       
                success: function(d) {  
                alert(d);                                            
                    },
                    error:function (xhr, ajaxOptions, thrownError){
                        alert(xhr.status);
                         alert(thrownError.toString());
                    }
        });

Может кто-нибудь, пожалуйста, помогите мне, потому что это дает мне бессонные ночи.заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 08 августа 2013

Сэр, попробуйте это

$(".test").live("click", function () {
$.ajax({
            type: "post",
            url: "http://localhost/Service1.svc/GetData",
            data: "{'value':1}",
            contentType: "application/json; charset=utf-8",
            timeout: 10000,
            processData: true,
            dataType: "json",       
            success: function(d) {  
            alert(d);                                            
                },
                error:function (xhr, ajaxOptions, thrownError){
                    alert(xhr.status);
                     alert(thrownError.toString());
                }
    });
0 голосов
/ 23 февраля 2012

Проверьте тип данных JSON, переданного по проводам (используя Fiddler2 или инструменты разработчика браузера по вашему выбору). Я подозреваю, что JSON передает «1» в виде строки вместо целого числа.

Похоже, проблема в аргументе данных:

data: {value:'1'},

Здесь не должно быть одинарных кавычек. Служба пытается разрешить метод с переменной «value» со строковым типом. Сделайте это вместо:

data: {value:1},

Это должно помочь службе выбрать правильный метод обслуживания.

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