2015-09-07 116 views
-1

我对ajax有个疑问。 我有网址:http://localhost:57295/api/Formgetstatus/id=admin&password=test123!&orderNo=000016-150000012C#Ajax无法从控制器响应中获取数据

当我点击这个网址,然后浏览器显示的信息responsed:

<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'); 
     } 
     }); 

我不知道为什么我无法获取数据来自阿贾克斯。请帮帮我!感谢大家!

+0

结果是什么?你看到警报“a”还是“b”? 如果是b,那么“数据”对象中有什么? 而不是做警报('b')尝试 警报(JSON.stringify(数据)) 相同的错误对象。让我们看看你得到了什么。 – GeekyMonkey

+0

在浏览器中使用F12工具查看实际响应。它包含顶部的标签,还是纯粹的xml? – GeekyMonkey

+0

当我使用ajax时,它是错误的。我希望数据对象的结果响应是xml数据。 – haunhqn

回答

0

控制器操作的返回值应该是从ActionResult派生的。试试你的对象转换为XML字符串然后返回

return this.Content(xmlString, "text/xml"); 

所以响应类型设置为XML

+0

感谢GeekyMonkey!我解决了 – haunhqn