Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自定义HTTP响应,C#和.ajax()?_C#_Asp.net_Ajax_Json_Httpresponse - Fatal编程技术网

自定义HTTP响应,C#和.ajax()?

自定义HTTP响应,C#和.ajax()?,c#,asp.net,ajax,json,httpresponse,C#,Asp.net,Ajax,Json,Httpresponse,我正在尝试使用方法查询包含“票证”信息的数据库 $.ajax({ type: 'GET', url: 'Preview.ashx', data: 'ticketID=' + ticketID, success: function (data) { // 'data' should be a row from the database, so it should be like an // array that contains e

我正在尝试使用方法查询包含“票证”信息的数据库

$.ajax({
    type: 'GET',
    url: 'Preview.ashx',
    data: 'ticketID=' + ticketID,
    success: function (data) {

        // 'data' should be a row from the database, so it should be like an
        // array that contains each column of the row
        // do stuff with this data
    }
});
。。。这样一切都很好。我对
数据
变量有问题。在服务器端,我确实

// get the ticket ID from the POST parameter
int ticketID = context.Request["ticketID"] != null ? Convert.ToInt32(context.Request["ticketID"]) : -1;
if (ticketID >= 0) {

    // grab the data from the database, getInfo() will retrieve the row
    // in the DB that corresponds to the ticket ID given, returning an 
    // ArrayList with all of the information
    ArrayList theTicket = getInfo(context, ticketID);

    // now, I need to somehow return this information so that I could deal with it
    // in the 'success' callback function above
    return;
} else {

    // something went wrong with the 'newTicket' POST parameter
    context.Response.ContentType = "text/plain";
    context.Response.Write("Error with 'ticketID' POST parameter. \n");
    return;
}
return;
我已经对此进行了足够的调试,以确保ArrayList包含正确的信息。现在我只需要把它还回去


我该怎么做?如何返回ArrayList中的数据?是否可以构造响应,以便我可以执行
data.ID
data.otherColumnName
,等等。。。在回调函数中访问不同字段?

是的,这是可能的。看一看。您可以使用或类以JSON格式序列化对象。也来看看


您可以使用ContentType application/json,其主体将是上述序列化程序之一将返回的字符串。您可以使用else语句中的相同代码

是的,这是可能的。看一看。您可以使用或类以JSON格式序列化对象。也来看看


您可以使用ContentType application/json,其主体将是上述序列化程序之一将返回的字符串。您可以使用else语句中的相同代码,您已经在Response.Write中执行下面的正确操作了

我将更改GetInfo以返回字符串数组,然后使用String.Join

string[] theTicket = getInfo(context, ticketId);
Response.Write(String.Join(",", theTicket);
否则,您可以循环遍历arraylist并自己构建逗号分隔的列表。然后可以在js中解析逗号分隔的值


更好的选择是使用json库并将ArrayList序列化为json,然后在客户端使用它。

使用Response.Write,您已经在做下面正确的事情了

我将更改GetInfo以返回字符串数组,然后使用String.Join

string[] theTicket = getInfo(context, ticketId);
Response.Write(String.Join(",", theTicket);
否则,您可以循环遍历arraylist并自己构建逗号分隔的列表。然后可以在js中解析逗号分隔的值


更好的选择是使用json库,将ArrayList序列化为json,并在客户端使用它。

可以使用任何java scrip库吗?json在这里是一个很好的关键字。如果没有,请将数据转换为xml,以文本形式发送并在客户端解析。是否可以使用任何java scrip库?json在这里是一个很好的关键字。如果没有,将数据转换成xml,作为文本发送并在客户端解析。是的。。。我不想做任何分析。应该有一种方法将其作为对象返回,就像我使用JSON一样。但是,我现在想避免使用JSON。。。有没有一种方法可以在没有外部库的情况下实现它?@Hristo-No。您正在跨越应用程序边界,因此序列化是必要的。JSon和XML是您的标准序列化选项。当数据到达客户机时,您将如何处理它?另一种选择是在服务器上呈现所需的html并返回该html,然后使用jquery将结果放在所需的页面上。那将是最快最简单的解决办法。@NerdFury。。。明白了。你完全正确。我将使用JSON解决方案。我只是想从数据库中查询一行,并使用该行的字段来显示信息。是的。。。我不想做任何分析。应该有一种方法将其作为对象返回,就像我使用JSON一样。但是,我现在想避免使用JSON。。。有没有一种方法可以在没有外部库的情况下实现它?@Hristo-No。您正在跨越应用程序边界,因此序列化是必要的。JSon和XML是您的标准序列化选项。当数据到达客户机时,您将如何处理它?另一种选择是在服务器上呈现所需的html并返回该html,然后使用jquery将结果放在所需的页面上。那将是最快最简单的解决办法。@NerdFury。。。明白了。你完全正确。我将使用JSON解决方案。我只是想从数据库中查询一行,并使用该行的字段来显示信息。@archil。。。1. <代码>此链接不起作用。2.你能提供一个建立这种反应的例子吗?@StuperUser。。。我还不太担心客户端的解析。我想先弄清楚如何创建响应,然后再考虑解析它。如果我不必解析它,那就更好了,但我想先让它运行起来。我编辑了我的答案。参见第二段和链接。情况与您的else语句相同,您需要内容类型和响应文本。@archil。。。1. <代码>此链接不起作用。2.你能提供一个建立这种反应的例子吗?@StuperUser。。。我还不太担心客户端的解析。我想先弄清楚如何创建响应,然后再考虑解析它。如果我不必解析它,那就更好了,但我想先让它运行起来。我编辑了我的答案。参见第二段和链接。情况与您的else语句相同,您需要内容类型和响应文本。