Jquery $.ajax()总是返回xhr.在本地主机上的状态为请求中止

本文关键字:主机 状态 请求 ajax xhr 返回 Jquery | 更新日期: 2023-09-27 17:49:28

我在本地pc上部署了一个JSON服务,我正在ASP.net/C#上工作,IE 9中返回的数据是一个有效的JSON响应,使用格式化器和解析器检查。

下面是JQuery调用(使用JQuery 1.7.1版本),我在一个HTML文件。

http://mylocalhostpc:2483/Portfolio.html

<script type="text/javascript">
$(document).ready(function () {
    $.ajax({
        url: "http://mylocalhostpc/JSONService/ServiceHandler.ashx?seed=ptr&cnt=2",
        contentType: "application/json; charset=utf-8",
        type: "GET",
        dataType: 'json',
        data: {},
        success: function (data) {
            if (data.results[0]) {
                var htmlText = data.results[0];
                var jsonObject = parseAndConvertToJsonObj(htmlText);
            } else {
                document.getElementById("footer-bottom").innerHTML = "Could not load the page.";
            }
        },
        error: function (xhr, status,thrownError) {
            switch (xhr.status) {
                case 200:
                    alert(xhr.status + ":- " + thrownError);
                    break;
                case 404:
                    alert('File not found');
                    break;
                case 500:
                    alert('Server error');
                    break;
                case 0:
                    alert('Request aborted: ' + !xhr.getAllResponseHeaders());
                    break;
                default:
                    alert('Unknown error ' + xhr.status + ":- " + thrownError);
            }
        }
    });
});

每次我收到的错误消息说'请求中止:true'。但是当我检查URL:

http://mylocalhostpc/JSONService/Default.aspx?seed=ptr&cnt=2

成功返回如下数据:

{ "Table" : [ { 
    "Product_Active" : true,
    "Product_DateAdded" : "/Date(1349352480000+0530)/",
    "Product_ISBN" : "9788179637494",
    "Product_Id" : 71,
    "Product_Price" : 45,
    "Product_Rating" : 5
  },
  { 
    "Product_Active" : true,
    "Product_DateAdded" : "/Date(1349352480000+0530)/",
    "Product_ISBN" : "9789350492536",
    "Product_Id" : 142,
    "Product_Price" : 150,
    "Product_Rating" : 5
  }
] }

网络。配置文件代码

<urlMappings>
  <add url="~/Default.aspx" mappedUrl="~/ServiceHandler.ashx"/>

服务处理程序背后的代码- ServiceHandler.ashx.cs

public class ServiceHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
    if (context.Request.QueryString["seed"] != null)
    {
        string searchstring = string.Empty;
        Products oProducts = new Products();
        context.Response.ContentType = "text/json";
        switch (context.Request.QueryString["seed"].ToString())
        {
            case "pra":
            // prODUCT aLL
                context.Response.Write(ProcessingRequest.Serialize(oProducts.getAllProducts("0", "")));
                break;
            case "ptr":
                // pRODUCTS tOP rATED
                searchstring = context.Request.QueryString["cnt"] == null ? "20" : context.Request.QueryString["cnt"].ToString();
                context.Response.Write(ProcessingRequest.Serialize(oProducts.getTopRatedProducts(searchstring)));
                break;
            default:
                context.Response.Write("Invalid service request, please check the url.");
                break;
        }
        context.Response.End();
    }
    else
    {
        context.Response.Write("Invalid service request, please provide valid seed.");
        context.Response.End();
    }
}
public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

我犯了什么错误,请帮我解决这个问题?

我尝试使用dataType作为'jasonp'和'script',但没有运气的错误更改为'未知错误未定义'

PS:经过更多的努力,我得到以下错误:

在jquery错误处理程序

中添加如下代码

case 200: alert(xhr.status + ":- " + thrownError); break;

返回错误代码

200:-错误:jQuery171049959372938610613_1356351917595未被调用

Jquery $.ajax()总是返回xhr.在本地主机上的状态为请求中止

我认为你必须这样使用:

success: function (data) {
   $.each(data.Table, function(i, resp){
        if (resp) {
            var htmlText = resp;
            var jsonObject = jQuery.parseJSON(htmlText);
            console.log(jsonObject);
        } else {
            $("#footer-bottom").html("Could not load the page.");
        }
   });
},

你也可以试试这个:

success: function (data) {
   $.each(data.Table, function(i, resp){
            console.log(resp);
   });
},

(代表OP发布)

通过在不同的服务器上托管服务和客户端来解决。