需要指导将子控件附加到父控件而不回发(使用Ajax)

时间:2011-12-18 17:00:07

标签: jquery asp.net ajax

我正在开发一个网站,提供问题和答案(只是纯文本),到目前为止我已经完成了后端和前端设计。

伙计们,我知道有很多问题要问这个问题,但是,我已经完成了大部分内容,正如您在屏幕截图中看到的那样。屏幕截图取自我使用两个嵌套转发器和一些CSS样式实现的实际网页(红色墨水除外)。数据库也已设置好,目前已提取,格式化和显示数据。

我需要知道如何提交评论。每个问题组的末尾都有一个textarea和一个提交按钮,此提交应该将内容加载到数据库并将注释附加到父级,ALL没有完整的POST BACK(页面刷新)。

P.S:不要介意它上面的愚蠢文字:D

准备好接受您可能提供的任何东西。感谢

2 个答案:

答案 0 :(得分:1)

由于您在ASP.NET中提到了回发,我假设您使用的是Web表单。

UpdatePanels(ASP.NET AJAX)

如果您试图避免完整的回发,那么明智地使用UpdatePanel将是使用ASP.NET中的Web表单实现该结果的最快方法。通过“明智地使用”,我的意思是:

  • 视图状态已停用或非常非常小

  • 总的异步POST大小是< 2K(请记住页面上的所有表单字段都将以UpdatePanel提交),无论它们是否在其中。

  • UpdatePanel上的UpdateMode设置为Conditional

  • 页面上有一个合理的数字(通常少于10)UpdatePanels。页面上的每个UpdatePanel都会生成脚本,并增加了呈现页面的开销。

  • 你在UpdatePanel内没有做太复杂的事情; “复杂”的一个很好的例子是客户端脚本/插件,当面板的innerHTML更新时,它会“混淆”。

jQuery / WCF解决方案

或者,您可以使用jQuery ajax方法将数据发送回服务器以响应某些事件(例如单击按钮)。这将需要客户端代码和某种服务器端处理程序来处理传入的数据,将其持久保存到数据库或视图模型等。

这是使用jQuery的ajax()方法的缩写示例。

 $.ajax({
        type: "GET|POST", // pick GET or POST
        url: "handler URL here",
        dataType: "json",
        data: {  }, // JSON object containing data
        success: function (data) {
            // fired upon success
        }
    });

WCF是处理传入数据的绝佳选择。 ASP.NET 4.0强有力地支持基于JSON的消息传递,并提供对安全性的精细控制,以防止未经授权的请求。 WCF端点可以是ASP.NET会话感知的。

答案 1 :(得分:1)

假设您在应用程序中使用jQuery是正常的。

假设用于发送邮件的按钮的ID是“sendBtn”,文本框的ID是“chatTxt” - 所有聊天消息都显示在ID为“chatContainer”的div中。

对于AJAX-POST,您的代码将类似于:

$.post(
  "chat.php", // replace this with your server side script that saves chat messages
  { 
    text: $('#chatTxt').val()
  },
  function(data) { // this will be called once the server returns, lets say it returns OK on success
    if(data == "OK") {
      // code to append the item to the chatContainer
      // replace the appended HTML with the actual structure of each chat item in your app
      $('#chatContainer').append('<div class="chatitem">'+$('#chatTxt').val()+'</div>');
    }
  }
);