我是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 ?? */
}
谢谢,最诚挚的问候
答案 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
对象并根据传入的请求参数设置属性。