首页 新闻 会员 周边

jquery中的ajax的$.get方法问题

0
悬赏园豆:10 [已解决问题] 解决于 2013-09-17 19:32

我在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!";
        }
    }
}

 

弹出的结果是:

3Z色狼的主页 3Z色狼 | 初学一级 | 园豆:178
提问于:2013-09-16 18:18
< >
分享
最佳答案
1

你这样写是不对的,这样是获取不到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)也要加上同样的参数

希望对你有帮助!!

收获园豆:10
|WinKi| | 小虾三级 |园豆:669 | 2013-09-17 19:15
其他回答(1)
0

新建一个WebForm2.aspx页面,清除除了第一行以外的所有代码。后台当中用Load()方法调用你要调用的方法。

WebForm1.aspx里面写

$(function () {
            $("input").click(function () {             
                $.get('WebForm2.aspx', function (data,status) {
                    alert(data);
                });
            })
        })

就可以了。

ajax是不可能访问到aspx的后台代码中的方法的,只会访问这个页面,页面载入的时候Load()方法就自动执行了,同时前端的页面也就异步地执行了另一个页面的功能

以上粗浅理解,希望你能懂

飞鸟_Asuka | 园豆:209 (菜鸟二级) | 2013-09-16 21:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册