2016-03-23 81 views
0

我有一个aspx页面上的以下设置:JQuery的AJAX和asp.net页面

<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; 
} 

的问题是,当我尝试返回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不会帮助我,因为我需要它在服务器端加载正确的值。

我试过找到控件,但是这仍然给出了相同的例外。

任何想法?

+0

您无法访问Web窗体控件(即'的')来自Web方法。您必须将值传递给您的Web方法。 – zgood

回答

0

我传递的变量到服务器端这样的(我相信我能够把它打扫干净了一下):

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; 
}