在jquery中调用函数后面的代码

时间:2014-04-28 11:45:33

标签: c# javascript jquery asp.net ajax

我正在尝试做一个非常简单的任务。不确定我做错了什么。我需要将一些值传递给代码隐藏方法,在那里进行一些计算然后返回结果。我开始使用测试方法。网上有很多例子。但没有什么对我有用。

请参阅下面的默认页面代码:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication7._Default" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">

  <script type="text/javascript">

      $(document).ready(function () {
          var loc = window.location.href;
          $("#btnClick").click(function (event) {
              $.ajax({
                  type: 'POST',
                  url: loc + "/GetMessage",
                  data: "{}",
                  contentType: "application/json; charset=utf-8"

               })
               .success(function (response) {
                    alert(response.d);

                })
                .error(function (response) {
                    alert(response.d);
                });
           });
      });

  </script>

   <input id="btnClick" type="button" value="button" />


</asp:Content>

jquery已在母版页中引用:

<script src="Scripts/jquery-2.1.0.js"></script>
<script src="Scripts/jquery-2.1.0.min.js"></script>

代码隐藏:

    [WebMethod]
    public static string GetMessage()
    {
        return "test";
    }

我得到&#34;未定义&#34;错误。当我更改.success和.error函数时,如下所示

           .success(function () {
                alert("S");

            })
            .error(function () {
                alert("E");
            });

显示&#34; S&#34;。我的理解是它找到了方法背后的代码。但是回应&#39;未定义。这是否意味着后面的代码方法没有以json格式返回数据?

5 个答案:

答案 0 :(得分:1)

我终于通过在App_Start中注释掉代码来解决这个问题。 Murali的建议帮助我找出实际问题。例外是“身份验证失败”。     //settings.AutoRedirectMode = RedirectMode.Permanent;

答案 1 :(得分:0)

尝试删除.d并检查控制台

.success(function (response) {
  console.log(response); //  in firefox/chrome
  alert(response);

})

检查firebug控制台是否有JSON输出。以下是示例截图

enter image description here

答案 2 :(得分:0)

请检查一下。

       .success(function (data) {
            alert(data);

        })

答案 3 :(得分:0)

首先只使用minified or unminified的单个版本(jquery),然后使用dataType:'json'

$("#btnClick").click(function (event) {
    $.ajax({
        type: 'POST',
        url: loc + "/GetMessage",
        dataType: 'json', // for json data, which is parsed
        success:function (response) {//combining success and error callback in ajax
            console.log(response);
        },
        error:function (response) {
            console.log(response);
        }
   });
});

答案 4 :(得分:0)

您需要在以下行中删除属性runat =“server”:

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">

因为这样说,javascript代码在服务器而不是在客户端/浏览器上运行,例如。改变这一点可以解决你所有的问题。