gpt4 book ai didi

javascript - 将 Javascript 对象数组传递给 C# 代码隐藏

转载 作者:太空宇宙 更新时间:2023-11-03 20:02:17 25 4
gpt4 key购买 nike

我在将我的 Javascript 对象数组发布到 C# Codebehind 时遇到了一些问题。我遵循了一个简单的教程并认为这会很好地工作,但我在 PassThings 中的 C# 代码隐藏断点从未被击中。

我已经尝试将 url 更改为“Default.aspx/PassThings”,但它仍然没有发布到我后面的代码中,错误警报显示“[object object”]

这是我的客户端:

Default.aspx

脚本

<script>

function Save() {
$(document).ready(function () {
var things = [
{ id: 1, color: 'yellow' },
{ id: 2, color: 'blue' },
{ id: 3, color: 'red' }
];

things = JSON.stringify({ 'things': things });

$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: 'POST',
url: '/PassThings',
data: things,
success: function () {
alert("success");
},
error: function (response) {
alert(response);
}
});
});

}

</script>

HTML

<input type="button" value="Pass Things" onclick="JavaScript: Save();">

Default.aspx.cs

代码隐藏

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Web.Services;

[System.Web.Script.Services.ScriptService]
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}

[WebMethod]
public void PassThings(List<Thing> things)
{
var t = things;
}

public class Thing
{
public int Id { get; set; }
public string Color { get; set; }
}

}

有没有人看到我做错了什么?

感谢您的宝贵时间。

最佳答案

url通过页面传递正确的 url。假设 PassThings方法在Default.aspx页面代码隐藏文件然后你必须传递 url: Default.aspx/PassThings 如果脚本代码是在 Default.aspx 中编写的。

如果脚本位于Scripts 文件夹中的单独js 文件中,那么您必须返回一个目录并编写:url: ../Default.aspx/PassThings

$(document).ready(function () {
var things = [{
id: 1,
color: 'yellow'
}, {
id: 2,
color: 'blue'
}, {
id: 3,
color: 'red'
}];

things = JSON.stringify({
'things': things
});

$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: 'POST',
url: 'Default.aspx/PassThings',
data: things,
success: function () {
alert("success");
},
error: function (response) {
alert(JSON.stringify(response));
}
});
});

并且在你的方法后面的代码中应该用 [WebMethod] 修饰它应该是publicstatic :

    [WebMethod]
public static void PassThings(List<Thing> things)
{
var t = things;
}

关于javascript - 将 Javascript 对象数组传递给 C# 代码隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26680670/

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