2014-04-14 7 views
0

Я довольно новичок в Javascripts, jQuery и Ajax, поэтому у меня есть несколько вопросов.jQuery Ajax - вызов и ответ

Что я хочу: Сделайте запрос Ajax в своем javascript, и контроллер возьмет OBJECT в качестве параметра. Контроллер, получив ответ от фонового потока в виде потока, вернет результат как JSON (при успехе в javascript). Однако здесь я немного не уверен. Будет ли возвращен JObject или строчная строка JSON (с помощью, например, JsonConvert)?

В моем WebApiConfig.cs:

config.Routes.MapHttpRoute(
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

Тип объекта в списке параметров контроллеров: метод

public class Credentials 
{ 
    public string Email { get; set; } 
    public int CustomerID { get; set; } 
    public string Reference { get; set; } 
} 

регулятора, будет называться:

public HttpResponseMessage GetOrderInfo(Credentials credentials) 
{ 
    // Create Url with appended Credential properties 
    var httpWebRequest = (HttpWebRequest)WebRequest.Create(url); 

    httpWebRequest.Accept = "application/json"; 

    httpWebRequest.Method = "POST"; 
    var response = (HttpWebResponse)httpWebRequest.GetResponse(); 

    var responseStream = response.GetResponseStream(); 
    var rawJson = new StreamReader(responseStream).ReadToEnd(); 

    // var json = JObject.Parse(rawJson); 
    return Request.CreateResponse(HttpStatusCode.OK, rawJson); 
} 

Javascript:

function get_order_info(email, customerId, reference) { 
    /* This is where I want the Ajax call to the correct controller, taking an object 
     as a parameter */ 
} 

Теперь мои вопросы:

Как такой вызов взгляд $ Ajax как, учитывая, что я хочу конкретный метод контроллера называть, который принимает объект Credential в качестве параметра?

Я хочу, чтобы формат JSON возвращался, это правильный способ в методе контроллера GetOrderInfo?

И я чувствую себя немного глупым для последнего вопроса. Если правильно JSon формат возвращается, как мне получить доступ к нему из ответа:

success: function (response) { 
    /* response.responseText ?? */ 
} 

Спасибо, С наилучшими пожеланиями

ответ

0

Взятие Ajax из картины;

Каким будет ваш обычный веб-запрос?

пример запроса GET: http://localhost:8080/api/controller1/get_order_info?email=value1&&customerId=value2&&reference=value3

Признает ли этот вызов ваш метод контроллера, примите параметры запроса и дает вам объект JSON обратно?

Если да, то вы можете либо сделать запрос Ajax GET, либо POST, чтобы сделать то же самое.

запрос

Ajax POST с помощью JQuery:

$.post("http://localhost:8080/api/controller1/get_order_info", { email: "value1", customerId: "value2", reference:"value3" }) 
    .done(function(data) { 
    alert("Data Loaded: " + data); 
    }); 

https://api.jquery.com/jQuery.post/

Примечание: В данном конкретном случае, должен быть какой-то компонент сервера, которые принимают запрос и создать Credentials объект и установить свойства из входящего параметры запроса.

Смежные вопросы