我正在尝试做一个非常简单的任务。不确定我做错了什么。我需要将一些值传递给代码隐藏方法,在那里进行一些计算然后返回结果。我开始使用测试方法。网上有很多例子。但没有什么对我有用。
请参阅下面的默认页面代码:
<%@ 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格式返回数据?
答案 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输出。以下是示例截图
答案 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代码在服务器而不是在客户端/浏览器上运行,例如。改变这一点可以解决你所有的问题。