jQuery Ajax - 调用和响应

时间:2014-04-14 20:52:15

标签: javascript ajax json

我是Javascripts,jQuery和Ajax的新手,所以我有几个问题。

我想要的是: 在我的javascript中发出Ajax请求,控制器将OBJECT作为参数。控制器在收到来自后端的响应后,将作为JSON返回结果(在javascript中成功)。但是,这是我有点不确定的地方。应该返回JObject还是原始JSON字符串(在例如JsonConvert的帮助下)?

在我的WebApiConfig.cs中:

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

Controllers参数列表中的对象类型:

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调用怎么样,考虑到我想调用一个特定的Controller方法,它将Credential对象作为参数?

我想要返回JSON格式,它是否是Controller方法GetOrderInfo中的正确方法?

我觉得最后一个问题有点愚蠢。如果返回了正确的JSon格式,我该如何从响应中访问它:

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

谢谢,最诚挚的问候

1 个答案:

答案 0 :(得分:0)

将Ajax排除在外;

您的正常网络请求如何?

GET请求的示例:http://localhost:8080/api/controller1/get_order_info?email=value1&&customerId=value2&&reference=value3

此调用是否识别您的Controller方法,接受请求参数并返回json对象?

如果是,那么您可以使Ajax GET或POST请求也这样做。

通过JQuery的Ajax POST请求:

$.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对象并根据传入的请求参数设置属性。