gpt4 book ai didi

c# - 从 .aspx 获取数据到 jquery ajax

转载 作者:行者123 更新时间:2023-12-02 18:30:19 25 4
gpt4 key购买 nike

我是 jquery 新手,我有一个问题:我有两个 .aspx 文件:其中一个包含脚本

<script type ="text/javascript">
$(document).ready(function () {
var schemaName = GetURLParameters('schemaName');
var key = GetURLParameters('key');
$.post("dataloader.aspx", {
name: schemaName,
key: key
});
});
</script>

将参数发送到其他页面“dataloader.aspx”。这是“dataloader.aspx.cs”代码:

protected void Page_Load(object sender, EventArgs e)
{
Response.ContentType = "application/json";
var schemaName = Request.Form["name"];
var key = Request.Form["key"];

Loader loader = ConnectionManager.getLoader();
Dictionary<string, string> name_value = new Dictionary<string, string>();
if (!string.IsNullOrEmpty(schemaName))
{
var schema = loader.GetSchema(schemaName);
var qcontext = new SimpleLoader.BOService.QueryContext();
qcontext.InitQueryContext();

var element = loader.GetObjectByKey(schema, key);
var viselems = element._Schema.GetVisibleElems();
var cardElems = viselems.Where(x => !(x is SchemaElemDetail)).ToList();

foreach (var elem in cardElems)
{
var value = (element.GetValue(elem.Name) ?? "").ToString();
if (!string.IsNullOrEmpty(value))
{
name_value.Add(elem.Name, value);
}
}
Response.Write(name_value);
Response.Flush();
Response.End();
}

}

如您所见,我正在向字典添加一些数据。我想通过 jQuery 将这本字典发送到“clientcard.aspx”客户端,但我不知道如何......你能帮我吗?我将非常感激。

最佳答案

一种方法是调用 dataloader.aspx 中的 webmethod。假设您的函数名称为 getNameValue,在您的 aspx 页面中,您将有一个如下所示的 webmethod:(您基本上将代码从 Page_Load 事件传输到此)

[System.Web.Services.WebMethod]
public static Dictionary<string, string> getNameValue(string name, string keyN)
{
var schemaName = name;
var key = keyN;

Loader loader = ConnectionManager.getLoader();
Dictionary<string, string> name_value = new Dictionary<string, string>();
if (!string.IsNullOrEmpty(schemaName))
{
var schema = loader.GetSchema(schemaName);
var qcontext = new SimpleLoader.BOService.QueryContext();
qcontext.InitQueryContext();

var element = loader.GetObjectByKey(schema, key);
var viselems = element._Schema.GetVisibleElems();
var cardElems = viselems.Where(x => !(x is SchemaElemDetail)).ToList();

foreach (var elem in cardElems)
{
var value = (element.GetValue(elem.Name) ?? "").ToString();
if (!string.IsNullOrEmpty(value))
{
name_value.Add(elem.Name, value);
}
}
}
return name_value; //will be automatically serialised to JSON because of the dataType specification in ajax call.
}

您可以在 jQuery 中的 ready 中调用此函数,如下所示:

  $(document).ready(function () {
var schemaName = GetURLParameters('schemaName');
var key = GetURLParameters('key');
//just in case
var data = JSON.stringify({
name: schemaName,
keyN: key
});

$.ajax({
type: "POST",
url: "dataloader.aspx/getNameValue",
data: data,
contentType: "application/json; charset=utf-8",
dataType: "json",
error: function (xhr, status, error) {
var msg = JSON.parse(xhr.responseText);
alert(msg.Message);
}
}).done(function (msg) {
//msg.d will contain your dictionary
});
});

使用这种方法更好的原因是代码变得可重用。在当前设置中,如果您想获取 name_value 字典,则必须重新加载 aspx 页面。现在您需要做的就是调用这个方法。

希望这有帮助!

关于c# - 从 .aspx 获取数据到 jquery ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17862381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com