JQuery AJAX 和 asp.net 页
JQuery AJAX and asp.net page
我在 aspx 页面上有以下设置:
<asp:Content ID="contentBody" ContentPlaceHolderID="body" Runat="Server">
<div class="Container-WithoutSideBar">
<asp:Label ID="TextTitle" runat="server" AssociatedControlID="ArticleTitle" Text="Title " />
<asp:TextBox ID="ArticleTitle" TextMode="SingleLine" runat="server"></asp:TextBox>
...
</asp:Content>
和以下 JQuery AJAX:
function fnGetArticleHTML()
{
var articleText = JSON.stringify(tinyMCE.activeEditor.getContent());
$.ajax({
type: "POST",
url: 'adminpageadd.aspx/SubmitArticleHTML',
data: "{ 'ArticleHTML': " + articleText + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
alert("Article saved");
},
error: function (xhr, ajaxOptions, thrownError) {
//alert("Error Saving Article");
alert(xhr.responseText);
}
});
return false;
}
一切正常。
服务器端代码:
[System.Web.Services.WebMethod]
public static string SubmitArticleHTML(string ArticleHTML)
{
news_adminpageadd addArticle = new news_adminpageadd();
return addArticle.SubmitArticle(ArticleHTML);
}
private string SubmitArticle(string ArticleHTML)
{
return ArticleTitle.Text;
}
问题是,当我尝试 return Article.Text
,即 asp:TextBox
的内容时,出现以下异常:
{"Message":"Object reference not set to an instance of an object.","StackTrace":" at news_adminpageadd.SubmitArticle(String ArticleHTML) in .....\news\adminpageadd.aspx.cs:line 69\r\n at news_adminpageadd.SubmitArticleHTML(String ArticleHTML) in ....\news\adminpageadd.aspx.cs:line 64","ExceptionType":"System.NullReferenceException"}
这实际上是说:
ArticleTitle.Text;
未设置不是对象的实例。
我知道情况并非如此,因为在 Page_load 上它工作正常。
我假设问题出在与 WebMethod 的交互上,但我该如何解决它?
将文本框设置到客户端并通过 int 传递它 AJAX 对我没有帮助,因为我需要它在服务器端加载正确的值。
我已经尝试找到控件,但这仍然给出相同的异常。
有什么想法吗?
我像这样将变量传递给服务器端(我相信我可以稍微整理一下):
function fnGetArticleHTML()
{
var articleText = JSON.stringify(tinyMCE.activeEditor.getContent());
var ArticleTitle = JSON.stringify($('#<%=ArticleTitle.ClientID%>').val());
var ArticleAuthor = JSON.stringify($('#<%=AuthorName.ClientID%>').val());
var ArticlePosition = JSON.stringify($('#<%=AuthorPosition.ClientID%>').val());
var ArticlePhonNo = JSON.stringify($('#<%=AuthorPhone.ClientID%>').val());
var ArticleEmail = JSON.stringify($('#<%=AuthorEmail.ClientID%>').val());
var ArticleWebsite = JSON.stringify($('#<%=AuthorWebsite.ClientID%>').val());
var ArticleCategory = JSON.stringify($('#<%=ArticleCategories.ClientID%>').attr('value'));
$.ajax({
type: "POST",
url: 'adminpageadd.aspx/SubmitArticleHTML',
data: "{ 'ArticleHTML': " + articleText + ", 'ArticleTitle':" + ArticleTitle + ", 'ArticleAuthor':" + ArticleAuthor + ", 'ArticlePosition':" + ArticlePosition + ", 'ArticlePhonNo':" + ArticlePhonNo + ", 'ArticleEmail':" + ArticleEmail + ", 'ArticleWebsite':" + ArticleWebsite + ", 'ArticleCategory':" + ArticleCategory + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
alert("Article saved: " + response.d);
},
error: function (xhr, ajaxOptions, thrownError) {
alert("Error Saving Article");
}
});
return false;
}
我在 aspx 页面上有以下设置:
<asp:Content ID="contentBody" ContentPlaceHolderID="body" Runat="Server">
<div class="Container-WithoutSideBar">
<asp:Label ID="TextTitle" runat="server" AssociatedControlID="ArticleTitle" Text="Title " />
<asp:TextBox ID="ArticleTitle" TextMode="SingleLine" runat="server"></asp:TextBox>
...
</asp:Content>
和以下 JQuery AJAX:
function fnGetArticleHTML()
{
var articleText = JSON.stringify(tinyMCE.activeEditor.getContent());
$.ajax({
type: "POST",
url: 'adminpageadd.aspx/SubmitArticleHTML',
data: "{ 'ArticleHTML': " + articleText + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
alert("Article saved");
},
error: function (xhr, ajaxOptions, thrownError) {
//alert("Error Saving Article");
alert(xhr.responseText);
}
});
return false;
}
一切正常。
服务器端代码:
[System.Web.Services.WebMethod]
public static string SubmitArticleHTML(string ArticleHTML)
{
news_adminpageadd addArticle = new news_adminpageadd();
return addArticle.SubmitArticle(ArticleHTML);
}
private string SubmitArticle(string ArticleHTML)
{
return ArticleTitle.Text;
}
问题是,当我尝试 return Article.Text
,即 asp:TextBox
的内容时,出现以下异常:
{"Message":"Object reference not set to an instance of an object.","StackTrace":" at news_adminpageadd.SubmitArticle(String ArticleHTML) in .....\news\adminpageadd.aspx.cs:line 69\r\n at news_adminpageadd.SubmitArticleHTML(String ArticleHTML) in ....\news\adminpageadd.aspx.cs:line 64","ExceptionType":"System.NullReferenceException"}
这实际上是说:
ArticleTitle.Text;
未设置不是对象的实例。
我知道情况并非如此,因为在 Page_load 上它工作正常。
我假设问题出在与 WebMethod 的交互上,但我该如何解决它?
将文本框设置到客户端并通过 int 传递它 AJAX 对我没有帮助,因为我需要它在服务器端加载正确的值。
我已经尝试找到控件,但这仍然给出相同的异常。
有什么想法吗?
我像这样将变量传递给服务器端(我相信我可以稍微整理一下):
function fnGetArticleHTML()
{
var articleText = JSON.stringify(tinyMCE.activeEditor.getContent());
var ArticleTitle = JSON.stringify($('#<%=ArticleTitle.ClientID%>').val());
var ArticleAuthor = JSON.stringify($('#<%=AuthorName.ClientID%>').val());
var ArticlePosition = JSON.stringify($('#<%=AuthorPosition.ClientID%>').val());
var ArticlePhonNo = JSON.stringify($('#<%=AuthorPhone.ClientID%>').val());
var ArticleEmail = JSON.stringify($('#<%=AuthorEmail.ClientID%>').val());
var ArticleWebsite = JSON.stringify($('#<%=AuthorWebsite.ClientID%>').val());
var ArticleCategory = JSON.stringify($('#<%=ArticleCategories.ClientID%>').attr('value'));
$.ajax({
type: "POST",
url: 'adminpageadd.aspx/SubmitArticleHTML',
data: "{ 'ArticleHTML': " + articleText + ", 'ArticleTitle':" + ArticleTitle + ", 'ArticleAuthor':" + ArticleAuthor + ", 'ArticlePosition':" + ArticlePosition + ", 'ArticlePhonNo':" + ArticlePhonNo + ", 'ArticleEmail':" + ArticleEmail + ", 'ArticleWebsite':" + ArticleWebsite + ", 'ArticleCategory':" + ArticleCategory + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
alert("Article saved: " + response.d);
},
error: function (xhr, ajaxOptions, thrownError) {
alert("Error Saving Article");
}
});
return false;
}