1

我在本地 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);
            }
        }
    });
});

我每次都收到“请求中止:真”的错误消息。但是,当我检查 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 用作“jasonp”和“脚本”,但运气不好,错误更改为“未知错误未定义”

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

在我的 jquery 错误处理程序中添加了一个代码

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

它返回了我的错误代码

200:- 错误:未调用 jQuery171049959372938610613_1356351917595

4

2 回答 2

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

   });
},
于 2012-12-24T06:57:22.863 回答
0

(代表 OP 发布)

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

于 2017-04-26T10:49:07.750 回答