c# Ajax不能从控制器响应中获取数据
本文关键字:获取 数据 响应 控制器 Ajax 不能 | 更新日期: 2023-09-27 18:11:34
我有一个关于ajax的问题。我有URL: http://localhost:57295/api/Formgetstatus/id=admin&password=test123!&orderNo=000016-150000012
当我点击这个URL,然后浏览器显示信息响应:
<FormGetStatusRespond xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/FormService.RestApi">
<ResultInfo>
<ErrorInfo i:nil="true"/>
<ErrorType>None</ErrorType>
<Status>Ok</Status>
</ResultInfo>
<Status>OK</Status>
<StatusCode>1</StatusCode>
</FormGetStatusRespond>
控制器响应:
public FormGetStatusRespond GetStatus(string id, string password, string orderNo)
{
var respond = new FormGetStatusRespond();
var resultInfor = new ResultInfo();
var errorInfor = new ErrorInfo();
if(!this.AuthenticateForUser(id, password))
{
// Result Infor
resultInfor.Status = WebApiStatus.Error;
resultInfor.ErrorType = WebApiErrorType.AuthenticationError;
// Error Infor
errorInfor.Messsage = "abc";
resultInfor.ErrorInfo = errorInfor;
respond.ResultInfo = resultInfor;
return respond;
}
var orderDal = new OrderRepository();
var orderModel = orderDal.FindByOrderNo(orderNo);
if(orderModel != null)
{
// Result Infor
resultInfor.Status = WebApiStatus.Ok;
resultInfor.ErrorType = WebApiErrorType.None;
respond.ResultInfo = resultInfor;
respond.Status = this.GetOrderStatus(orderModel.OrderStatus);
respond.StatusCode = ((int)orderModel.OrderStatus).ToString();
}
else
{
// Result Infor
resultInfor.Status = WebApiStatus.Error;
resultInfor.ErrorType = WebApiErrorType.ApplicationError;
// Error Infor
errorInfor.Messsage = "abc:" + orderNo + "abc";
resultInfor.ErrorInfo = errorInfor;
respond.ResultInfo = resultInfor;
return respond;
}
return respond;
}
我使用ajax获取数据XML:
$.ajax({
type: 'GET',
url: "http://localhost:57295/api/Formgetstatus/id=admin&password=test123!&orderNo=000016-150000012",
dataType: 'xml',
success: function (data) {
alert('b');
},
error: function (error) {
alert('a');
}
});
我不知道为什么我不能从ajax获得数据。请帮帮我!谢谢大家!
控制器动作的返回值应该是从ActionResult派生出来的。尝试将对象转换为xml字符串,然后返回
return this.Content(xmlString, "text/xml");
所以响应类型设置为xml