Javascript 整个页面标记在AJAX请求时被替换

Javascript 整个页面标记在AJAX请求时被替换,javascript,jquery,ruby-on-rails,ajax,Javascript,Jquery,Ruby On Rails,Ajax,当我在js.erb模板中调用我的函数时,它将替换整个页面,而不仅仅是我指示的div。有人能帮忙吗 删除.js.erb $('div.mini-basket-wrapper').html("<%= j(render 'shop/baskorder/mini_basket') %>"); #This replaces the page completely $('#basket-info').load(document.write(basket_text())); $('div.m

当我在
js.erb
模板中调用我的函数时,它将替换整个页面,而不仅仅是我指示的
div
。有人能帮忙吗

删除.js.erb

$('div.mini-basket-wrapper').html("<%= j(render 'shop/baskorder/mini_basket') %>");


#This replaces the page completely
$('#basket-info').load(document.write(basket_text()));
$('div.mini-basket-wrapper').html(“”);
#这将完全替换页面
$('#basket info').load(document.write(basket_text());
查看

<div id="basket-info">
  <div id="basket-amount">
    <div class='mini-basket-icon'>
     <%= image_tag 'shop/icons/basket.svg', alt: '' %>
    </div>
    <script type='text/javascript'>
      document.write(basket_text());
    </script>
  </div>
</div>

编写(basket_text());
JS

    function fc_basket_text_from_cookie(empty_text, normal_text)
{
  var basket = readCookie('bk');

  if (basket)
  {
    var parts = decodeURIComponent(basket.replace(/\+/g, '%20')).split('|')

    if (parseInt(parts[1]) == 0)
      return normal_text.replace(/##VALUE##/g, parts[0]).replace(/##ITEMS##/g, parseInt(parts[1]));
      // return empty_text
    else
      return normal_text.replace(/##VALUE##/g, parts[0]).replace(/##ITEMS##/g, parseInt(parts[1]));
  } else {
    return '';
  }
}

var emptyBasketHTML = "<span class='header_text'>Items in basket: 0 Total: &#163;0.00</span>";
function basket_text(){
  var populated = "<span class='header_text'>Items in basket: ##ITEMS##</span><span class='header_text'>Total: ##VALUE##</span>";
  //populated += "<input type='submit' value='Checkout' name='commit' class='go_botton header-checkout-button'>"
  return fc_basket_text_from_cookie(emptyBasketHTML,populated);

}
函数fc\u basket\u text\u来自\u cookie(空\u文本、正常\u文本)
{
var basket=readCookie('bk');
如果(篮子)
{
var parts=decodeURIComponent(basket.replace(/\+/g,“%20”)).split(“|”)
if(parseInt(parts[1])==0)
返回普通文本。替换(/######/g,部分[0])。替换(/####/g,parseInt(部分[1]);
//返回空文本
其他的
返回普通文本。替换(/######/g,部分[0])。替换(/####/g,parseInt(部分[1]);
}否则{
返回“”;
}
}
var emptyBasketHTML=“篮子中的项目:0总计:£;0.00”;
函数(u text){
var populated=“篮子中的物品:##物品##总计:##价值#”;
//填充+=“”
从cookie返回fc_basket_text_(emptyBasketHTML,填充);
}
此处阅读:

页面加载完成后,文档将关闭。尝试在其中写入document.write将导致内容被擦除

此外,.load()函数用于从服务器加载数据。我相信您需要.html函数

[未测试]更改行
$(“#basket info”).load(document.write(basket_text())


$('#basket info').html(basket_text())

谢谢您的所有输入。意识到我做错了什么,决定在我的js文件中添加一个ajax on success:

$(document).on('ajaxSuccess', function(){
    $('#basket-amount-info').html(basket_text());
});

添加了这个id
#basket amount info
以在视图中包含脚本。

谢谢@wnbates,所以我尝试了一下,但它什么都没做?你能设置一个JSFIDLE或什么吗?我不知道如何使用js,rails等等这不是如何使用load。它应该将文件加载到元素中:
$(“#元素”).load(“file.html”)
file.txt
file.php