我在这里使用 AJAX (jQuery) 示例的 Deebu Jacob 的 ASP.NET Web 方法调用的略微修改版本。我已将 CodeBehind 修改为采用字符串而不是 int,但如果我尝试发送 alpha 字符串,则单击按钮时不会收到 JS 警报。另一方面,如果我发送一串数字,它可以工作,即使是空格和小数点。我添加了第二个函数,允许我发送变量而不是页面上的硬编码示例,它工作得很好。
我想我在 AJAX 调用中遗漏了一个概念contentType
,dataType
我只是还不明白。我尝试将 dataType 更改为text
和contentType
to application/x-www-form-urlencoded; charset=UTF-8
,但都无法正常工作。
HTML/ASP(此示例有效,如果您将变量之一更改为包含字母字符,则不会):
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="JQueryAJAXwithIntExample.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript">
function asyncServerCall(userid) {
jQuery.ajax({
url: 'WebForm1.aspx/GetData',
type: "POST",
data: "{'userid':" + userid + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert(data.d);
}
});
}
</script>
<script type="text/javascript">
function testMe() {
var suffix = ".159";
var text = "314" + suffix;
asyncServerCall(text);
}
</script>
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="button" value="click me" onclick="testMe();" />
</div>
</form>
</body>
</html>
CodeBehind(只有在 GetData 方法中将输入数据类型从 int 更改为 string):
using System;
using System.Web.Services;
namespace JQueryAJAXwithIntExample
{
public partial class WebForm1 : System.Web.UI.Page
{
[WebMethod()]
public static string GetData(string userid)
{
/*You can do database operations here if required*/
return "My user ID is: " + userid;
}
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
我的最终目标是将一个字符串或一系列字符串传回服务器,以便处理为我正在处理的在线 RMA 项目的邮件和 SQL 对象。