我正在构建一个使用jquery的页面方法调用的asp.net页面。这是一个简单的测试页面,但我无法让它工作,我看不出原因。
我在aspx中添加了一个脚本管理器。这是javascript函数:
<script type="text/javascript">
function CallGetLoaded() {
var ConfirmLoad = "test string";
$.ajax({
type: "POST",
url: "../Pages/TestPage.aspx/GetLoaded",
data: ConfirmLoad,
contentType: "application/text; charset=utf-8",
dataType: "text",
success: successLoadLeads,
error: errorLoadLeads
});
};
function successLoadLeads(thereturn) { alert((thereturn)); };
function errorLoadLeads() { alert("problem getting return"); };
</script>
这里有完整的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Script.Serialization;
using System.Web.Services;
public partial class Pages_TestPage : System.Web.UI.Page
{
[WebMethod]
public static string GetLoaded(string ConfirmLoad)
{
string ResultString = "got test";
return ResultString;
}
}
我不是在警告弹出窗口中找回一个简单的字符串,而是有时会返回整个页面的HTML,有时还会返回错误函数;不知道为什么会有所不同。 我错过了什么?
感谢您的建议。
答案 0 :(得分:1)
我对您的代码做了一些小改动。
contentType
请求的data
,dataType
和$.ajax
onsuccess
处理程序以检查.hasOwnProperty("d")
onerror
处理程序,以便您可以看到实际错误。我坚信您使用text
进行解析和检索时出现了解析错误。
以下是从您的代码中完成的示例。
MarkUp
<asp:Button ID="testclick" runat="server" Text="Click Me"/>
脚本
$(function () {
$('#testclick').click(function (e) {
CallGetLoaded();
e.preventDefault();
});
});
function CallGetLoaded() {
var ConfirmLoad = "test string";
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "TestPage.aspx/Getloaded",
data: "{'ConfirmLoad':'" + ConfirmLoad + "'}",
dataType: "json",
success: function (msg) {
var data = msg.hasOwnProperty("d") ? msg.d : msg;
OnSucessCallBack(data);
},
error: function (xhr, status, error) {
alert(xhr.statusText);
}
});
};
function OnSucessCallBack(data) {
alert(data);
}
守则背后
[WebMethod]
public static string GetLoaded(string ConfirmLoad)
{
string ResultString = "got test";
return ResultString;
}
P.S:正如FiveTools正确指出的那样,
是不必要的。 url:"../Pages/TestPage.aspx/Getloaded"
url:"TestPage.aspx/Getloaded"
会这样做。
答案 1 :(得分:0)
尝试网址:“TestPage.aspx / GetLoaded”,