Jquery $ .ajax()总是返回xhr.status,因为请求在localhost上中止

时间:2012-12-24 06:26:47

标签: c# asp.net jquery-ui jquery

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

下面是JQuery Call(使用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);
            }
        }
    });
});

我收到错误消息“&#39;请求已中止:true&#39;每次。 但是,当我检查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
  }
] }

web.config文件代码

<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作为&#39; jasonp&#39;和&#39;脚本&#39;同样没有运气,错误更改为“未知错误未定义&#39;

PS:经过多方努力后,我收到了以下错误:

在我的jquery错误处理程序

中添加了一个代码

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

将错误代码作为

返回给我
  

200: - 错误:未调用jQuery171049959372938610613_1356351917595

2 个答案:

答案 0 :(得分:0)

我认为你必须这样使用它:

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

   });
},

答案 1 :(得分:0)

(代表OP发布)

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