Javascript ajax客户机-服务器通信
我以前在这个网站上问过一个关于ajax客户机-服务器通信的问题 我得到了很多帮助。但是仍然无法理解,所以我们要问这个问题 我正在尝试将存储在变量'mem_ID'中的值从我的javascript页面…Default.aspx发送到我的服务器端-Default.aspx.cs页面。 Javascript:-Javascript ajax客户机-服务器通信,javascript,asp.net,ajax,Javascript,Asp.net,Ajax,我以前在这个网站上问过一个关于ajax客户机-服务器通信的问题 我得到了很多帮助。但是仍然无法理解,所以我们要问这个问题 我正在尝试将存储在变量'mem_ID'中的值从我的javascript页面…Default.aspx发送到我的服务器端-Default.aspx.cs页面。 Javascript:- <asp:Button ID="Button6" runat="server" BackColor="Silver" onclientclick="store_m
<asp:Button ID="Button6" runat="server" BackColor="Silver"
onclientclick="store_memID()" style="margin-left: 20px" Text="Submit"
Width="102px" Font-Bold="True" Height="28px" />
<script type = "text/javascript" src ="http://code.jquery.com/jquery-1.9.0.min.js"> </script>
<script type = "text/javascript">
// Function to caputure client-input- Member_ID.
function store_memID() {
// 'TextBox3' is the server side ID. To get the client side ID we do the following:-
mem_ID = document.getElementById('<%=TextBox3.ClientID%>').value;
//return confirm('TimeLine is displayed for: ' + mem_ID);
ajax();
}
function ajax(){
$.ajax({
url: 'Default.aspx/MyMethod',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({ memID: mem_ID }),
success: function (result) {
alert(result.d);
}
});
}
</script>
但是,我仍然没有从服务器得到任何回复。我期待着服务器端的回复“感谢您用ID给我打电话……”。有什么想法吗?
我在MyMethod、响应行和服务器端添加了一个断点,没有命中。所以我假设这条线甚至没有被穿过
我不熟悉Asp.net和Ajax。在这个话题上需要帮助 您将以JSON对象的形式传递值,指定请求的数据类型并指定服务器返回的格式非常重要
function ajax(){
$.ajax({
url: 'default.aspx/MyMethod',
type: 'POST',
dataType: "json",
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({ memID: mem_ID }),
success: function (result) {
alert(result.d);
}
});
}
// Defining a page method.
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string MyMethod(string mem_ID)
{
return string.Format("Thanks for calling me with id: " + mem_ID);
}
然后需要添加ScriptManager和UpdatePanel来触发Ajax调用。ScriptManager提供了从Aspx页面调用WebMethods的功能。使用我提供的上述代码
<head runat="server">
<title></title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.0.min.js"/>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="Button6" runat="server" BackColor="Silver" OnClientClick="store_memID()"
Style="margin-left: 20px" Text="Submit" Width="102px" Font-Bold="True" Height="28px" />
<asp:TextBox ID="TextBox3" runat="server">Testing</asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
测试
以下是我为您编写的一个完整示例:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Services" %>
<script type="text/c#" runat="server">
[WebMethod]
public static string MyMethod(string memId)
{
return string.Format("Thanks for calling me with id: " + memId);
}
</script>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:Button ID="MyButton" runat="server" Text="Submit" />
<asp:TextBox ID="MyTextBox" runat="server" />
</form>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script type="text/javascript">
$('#<%= MyButton.ClientID %>').click(function () {
var memId = $('#<%= MyTextBox.ClientID %>').val();
$.ajax({
url: '<%= ResolveUrl("~/Default.aspx/MyMethod") %>',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({ memId: memId }),
success: function (result) {
alert(result.d);
}
});
return false;
});
</script>
</body>
</html>
[网络方法]
公共静态字符串MyMethod(字符串memId)
{
return string.Format(“感谢您用id:+memId给我打电话”);
}
$('#')。单击(函数(){
var memId=$('#').val();
$.ajax({
url:“”,
键入:“POST”,
contentType:'application/json;charset=utf-8',
数据:JSON.stringify({memId:memId}),
成功:功能(结果){
警报(结果d);
}
});
返回false;
});
出于演示的目的,它是一个自包含的Web表单,但您当然可以将代码从标记中分离出来。
<form id="form1" runat="server">
<div>
<asp:Button ID="Button6" runat="server" BackColor="Silver"
onclientclick="store_memID()" style="margin-left: 20px" Text="Submit"
Width="102px" Font-Bold="True" Height="28px" />
<script type = "text/javascript" src ="http://code.jquery.com/jquery-1.9.0.min.js"> </script>
<script type = "text/javascript">
// Function to caputure client-input- Member_ID.
function store_memID() {
var mem_ID;
// 'TextBox3' is the server side ID. To get the client side ID we do the following:-
mem_ID = document.getElementById('<%=TextBox3.ClientID%>').value;
//return confirm('TimeLine is displayed for: ' + mem_ID);
ajax(mem_ID);
}
function ajax(mem_ID) {
alert(mem_ID);
$.ajax({
url: 'Default.aspx/MyMethod',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({ memID: mem_ID }),
success: function (result) {
alert(result.d);
}
});
}
</script>
<asp:TextBox id="TextBox3" runat="server"></asp:TextBox>
</div>
</form>
In Your Code Behind
[WebMethod]
public static string MyMethod(string memID)
{
return string.Format("Thanks for calling me with id: " + memID);
}
The method u have done all was right execpt,
The data passing from ajax should match the string Element declared in the Web-method.
//函数用于Capture客户端输入-成员ID。
函数存储_memID(){
变量mem_ID;
//“TextBox3”是服务器端ID。要获取客户端ID,请执行以下操作:-
mem_ID=document.getElementById(“”).value;
//返回确认('为“+mem_ID”显示时间线);
ajax(mem_ID);
}
函数ajax(mem_ID){
警报(mem_ID);
$.ajax({
url:'Default.aspx/MyMethod',
键入:“POST”,
contentType:'application/json;charset=utf-8',
数据:JSON.stringify({memID:mem_ID}),
成功:功能(结果){
警报(结果d);
}
});
}
在你的代码背后
[网络方法]
公共静态字符串MyMethod(字符串memID)
{
return string.Format(“感谢您用id:+memID给我打电话”);
}
你所采取的方法是正确的,
从ajax传递的数据应该与Web方法中声明的string元素匹配。
通常,我创建一个Ajax.aspx文件,该文件处理大多数客户机-服务器Ajax交互,处理方式与下面示例中相同。然后此页面加载特定控件。我有时会在ajax请求中添加函数
参数,以访问控件中的特定方法或直接在ajax.aspx页面上访问特定方法
示例:非常感谢各位,你们帮了大忙。谢谢你让我开始达林!!还有穆图兰!!
<form id="form1" runat="server">
<div>
<asp:Button ID="Button6" runat="server" BackColor="Silver"
onclientclick="store_memID()" style="margin-left: 20px" Text="Submit"
Width="102px" Font-Bold="True" Height="28px" />
<script type = "text/javascript" src ="http://code.jquery.com/jquery-1.9.0.min.js"> </script>
<script type = "text/javascript">
// Function to caputure client-input- Member_ID.
function store_memID() {
var mem_ID;
// 'TextBox3' is the server side ID. To get the client side ID we do the following:-
mem_ID = document.getElementById('<%=TextBox3.ClientID%>').value;
//return confirm('TimeLine is displayed for: ' + mem_ID);
ajax(mem_ID);
}
function ajax(mem_ID) {
alert(mem_ID);
$.ajax({
url: 'Default.aspx/MyMethod',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({ memID: mem_ID }),
success: function (result) {
alert(result.d);
}
});
}
</script>
<asp:TextBox id="TextBox3" runat="server"></asp:TextBox>
</div>
</form>
In Your Code Behind
[WebMethod]
public static string MyMethod(string memID)
{
return string.Format("Thanks for calling me with id: " + memID);
}
The method u have done all was right execpt,
The data passing from ajax should match the string Element declared in the Web-method.