2010-02-01 3 views
0

Я вызываю простой метод на стороне WCF с помощью JQuery.Прошел параметр null в стороне WCF

$.ajax({ 
     type: "POST", 
     url: "MyService.svc/TestJSON", 
     data:'{"BikeId":"2"}', 
     //data: '{"BikeId":"'+ id + '"}',     
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(msg) { 
      alert(msg); 
     }, 
     error: GetFailedMessage 
    }); 
    function GetFailedMessage(msg) { 
     alert('Error message. ' + msg.status + ' ' + msg.statusText); 
    } 
}); 

Мой простой TestJSON является [OperationContract]

public string TestJSON(string id) 
{ 
    Bikes b = new Bikes(); 
    b.Description = "blah blah"; 
    b.Name = "DMX100"; 
    b.Make = "2010"; 
    b.ID = id; 
    string bikeJson = JsonConvert.SerializeObject(b); 
    return bikeJson; 
} 

Я знаю, что этот метод вызывается с помощью Breakpoint, но параметр "идентификатор" равно нулю. Что мне здесь не хватает?

+0

Рассмотрите возможность форматирования кода как кода в редакторе StackOverflow. – Bruce

+0

Спасибо, я довольно новичок в SO. Это будет иметь в виду. – user424134

+0

Нет проблем, приветствуем, и если вы новичок, почему у вас так много других моментов, как у меня? * grin * – Bruce

ответ

1

Я предполагаю, что немного, но возможно, служба выводит имя вашего элемента данных как «id», когда браузер передает его как «BikeId»?

+0

Спасибо, получил у ... :) – user424134

2

Ваш сервис ожидает параметра с именем id, а на стороне клиента вы отправляете значение с помощью BikeId в качестве имени параметра.

Либо имя параметра в вашем TestJSON сигнатуру метода для:

public string TestJSON(string BikeId) {/*...*/} 

или модифицировать data объект в стороне клиента:

$.ajax({ 
    type: "POST", 
    url: "MyService.svc/TestJSON", 
    data: '{"id":"'+ id + '"}', // <------ 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
    alert(msg); 
    }, 
    error: GetFailedMessage 
}); 
Смежные вопросы