我在asp.net中使用jquery的$.get方法为啥返回的是自身页面的html文本,代码如下:
前台:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="ajaxtest.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script src="jquery-1.9.1.js"></script>
<script type="text/javascript">
$(function () {
$("input").click(function () {
$.get('WebForm1.aspx/msg', function (data,status) {
alert(data);
});
})
})
</script>
</head>
<body>
<input type="button" value="testajax"/>
</body>
</html>
后台:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace ajaxtest
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public string msg()
{
return "test!";
}
}
}
弹出的结果是:
你这样写是不对的,这样是获取不到msg的,获取到的是Page_Load 所以返回的是一个页面。
$(function () { $("input").click(function () { $.get('WebForm1.aspx', function (data,status) { alert(data); }); }) }) 在page_load里面 Response.Write("Hello"); 这样你就可以获取了。
当然这样很不好,所以一般是这样做的,定义public static string msg()加上特性[WebMethod].如:
cs: [WebMethod] public static string msg() { return "hello!" } js: $.ajax( { url:'WebForm1.aspx/msg', type:'post', dataType:'json', success:function(data) { alert(data.d) ; }, error : function() { alert("异常!"); } });
如果要传参数的话,在$ajax里加上data:{id:1},msg(int id)也要加上同样的参数
希望对你有帮助!!
新建一个WebForm2.aspx页面,清除除了第一行以外的所有代码。后台当中用Load()方法调用你要调用的方法。
WebForm1.aspx里面写
$(function () {
$("input").click(function () {
$.get('WebForm2.aspx', function (data,status) {
alert(data);
});
})
})
就可以了。
ajax是不可能访问到aspx的后台代码中的方法的,只会访问这个页面,页面载入的时候Load()方法就自动执行了,同时前端的页面也就异步地执行了另一个页面的功能
以上粗浅理解,希望你能懂