Javascript AJAX链接导致删除div内容,但不插入新文本

Javascript AJAX链接导致删除div内容,但不插入新文本,javascript,ajax,jquery,ruby-on-rails-3.2,Javascript,Ajax,Jquery,Ruby On Rails 3.2,使用Rails 3.2.8 选择链接会产生预期的确认对话框,“哦,是吗?” 选择“确定”按钮的预期结果是,中的文本“表单在此显示”应更改为“表单\n通知” 实际结果是文本“表单在此显示”按其应有的方式消失,但在 页面代码显示HTML5 doctype、rails和AJAX链接包含的jQuery文件: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> &

使用Rails 3.2.8

选择链接会产生预期的确认对话框,“哦,是吗?”

选择“确定”按钮的预期结果是,
中的文本“表单在此显示”应更改为“表单\n通知”

实际结果是文本“表单在此显示”按其应有的方式消失,但在

页面代码显示HTML5 doctype、rails和AJAX链接包含的jQuery文件:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
    <title></title>
    <script src="/assets/jquery.js?body=1" type="text/javascript"></script>
    <script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
    <script src="/assets/application.js?body=1" type="text/javascript"></script>
    <meta content="authenticity_token" name="csrf-param" />
    <meta content="0ycwNRsr8kneUjB5/SFz+LD+bnhbQHXMJzgADbkv78g=" name="csrf-token" />
  </head>
  <body>
    <a href="/sessions/new" data-confirm="oh yeah?" data-remote="true">Hello world!</a>
      <div id="target">
        the form goes here
      </div>
  </body>
</html>
模板:app/views/sessions/new.js.erb

respond_to :html, :js
  def new
    @session = "snookums"
    respond_with(@session)
  end
var session_form = $('<%= j(render(:partial => "form")) -%>');
$('#target').html(session_form);
开发日志

Started GET "/sessions/new" for 127.0.0.1 at 2012-11-10 15:57:20 -0500
Processing by SessionsController#new as JS
the form "snookums"
  Rendered sessions/_form.html.erb (1.2ms)
  Rendered sessions/new.js.erb (48.9ms)
Completed 200 OK in 65ms (Views: 64.0ms | ActiveRecord: 0.0ms)
一切似乎都有联系。我在new.js.erb中生成的响应是否有问题?是
$('#target').html(会话形式)相当于“将div'target'的内容替换为'session_form'中包含的文本”


顺便说一句,FWIW我也在没有确认的情况下尝试了它-没有区别。

对于与ajax相关的问题,使用错误处理程序查看返回的结果是一种很好的习惯。 为此,我在使用ajax的所有页面中都包含了这个代码块

$.ajaxSetup({
  error:function(x,e){
       if(x.status==0){
       alert('You are offline!!\n Please Check Your Network.');
       }else if(x.status==404){
       alert('Requested URL not found.');
       }else if(x.status==500){
       alert('Internal Server Error.');
       }else if(e=='parsererror'){
       alert('Error.\nParsing JSON Request failed.');
       }else if(e=='timeout'){
       alert('Request Time out.');
       }else {
       alert('Unknow Error.\n'+x.responseText);
       }
  }
  });

您的ajax代码是什么样子的?可以帮助您查看调用
$('#target').html(session_form)
的位置,它实际上表示在
id=target
中插入新的html这是一个无效的选择器
$('the form\nsnookums'));
。不确定这是否合适。再次查看更多代码将有所帮助,谢谢@Sean Vieira。除jQuery提供的代码外,所有代码都在上面。简要地说:“Hello World!”链接已选中。请求将发送到控制器,其中“@session”由“new”操作创建。“new.js.erb”模板将生成javascript代码以在div“target”上执行。文本“th”e form\n nookums'是从部分''u form'作为'session\u form=$()'的参数组合而成的。Firebug执行javascript,清除div文本…然后无法将其替换为'the form\n nookums'。选择器是'$('.\n目标')'.$('the form\n nookums'))'是要通过选择器的'html'方法插入的文本。抱歉,charlietfl,我的属性搞错了;希望我的编码更好!你需要显示更多的javascript代码。我将此代码放入application.js中。目前还没有警报。你能提供给我们一个url进行测试吗?我没有办法部署-我的公共服务器仍然是Rails 2.2.2。主要的我们必须处理的是Firebug响应。我已经解决了这个问题。如果我在app/views/sessions/_form.HTML.erb的文本周围添加一些HTML标记,div将按预期更新。Firebug响应类似于:“var session_form=$('the form\nsnookums\n')$(“#target”).html(会话表单);“。有趣的是,这是关于“responses_to:js”(no:html”)。对于我使用“_form”处理尚未包含表单的文件可能造成的任何混乱,我深表歉意。如果有人能够解释如何在没有html标记的情况下替换文本,这可能是一个成熟的解决方案。感谢您的关注。
$.ajaxSetup({
  error:function(x,e){
       if(x.status==0){
       alert('You are offline!!\n Please Check Your Network.');
       }else if(x.status==404){
       alert('Requested URL not found.');
       }else if(x.status==500){
       alert('Internal Server Error.');
       }else if(e=='parsererror'){
       alert('Error.\nParsing JSON Request failed.');
       }else if(e=='timeout'){
       alert('Request Time out.');
       }else {
       alert('Unknow Error.\n'+x.responseText);
       }
  }
  });