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: £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
。