如何在用户点击C#页面时使用Ajax从aspx页面发送数据



我正在与之合作。NetFramework4.6.1我有一个aspx页面,它使用Telerik控制器呈现数据。我需要能够将属性从Telerik控制器传递回C#页面。我设置了它,这样当用户单击行列时,它就会运行带有硬编码值的ajax方法。我无法使用Ajax发送我的值,我会立即收到错误响应。我做错什么了吗?我到处找文档,但都不适用于我的框架。。。aspx.cs页面aspx页面

ASPX页面

<telerik:RadGrid ID="RadGrid1" runat="server" AllowPaging="False" AllowSorting="False" AllowFilteringByColumn="False" OnNeedDataSource="GetPharmacyByCorporate">
<ClientSettings>
<Scrolling AllowScroll="True" ScrollHeight="650px" UseStaticHeaders="True"></Scrolling>
<ClientEvents OnRowClick="sendIndex" />
<%-- On user click (client side) --%>
</ClientSettings>
<MasterTableView>
<Columns>
</Columns>
<%-- Columns renders every item passed --%>
</MasterTableView>
</telerik:RadGrid>
<script>
function sendIndex() {
$.ajax({
url: "/CorpPharmacyList/getIndexed",
type: 'POST',
contentType: "application/json; charset=utf-8",
dataType: 'json',
data: { "indexValue": "4" },
success: function (data) {
if (data) {
console.log("Post successful");
}
},
error: function (e) {
console.log("There was an error with the ajax call")
}
})
}
</script>

C#页面

public class indexed
{
public int indexValue { get; set; }
}
[WebMethod]
public void getIndexed(indexed indexe)
{
try {
var myVar = indexe.indexValue;
}
catch (Exception ex)
{
}
}

根据对上述问题的评论。。。

这是我得到的错误"意外的令牌"<"lt;!DOCTYPE";。。。不是有效的JSON";

这意味着服务器没有返回JSON,而是返回HTML。但是JavaScript代码明确地期望JSON:

dataType: 'json',

看看服务器端的代码,这是有道理的。因为服务器端代码不会返回任何东西:

public void getIndexed(indexed indexe)

因此,它似乎默认为某种页面。

您可以告诉JavaScript代码使用HTML:

dataType: 'html',

如果您修改服务器端代码以返回JSON数据,只需记住在客户端将其更改回。

最新更新