Hello Stackoverflow用户,
我有一个页面可以执行AJAX请求来更新购物车。 问题是购物车有一些内联的javascript,它打破了ajax请求的页面。
以下是我使用的ajax请求:
$.ajax({
url: "Default.aspx?ID=5&productid=PROD147&cartcmd=add",
success: function () {
$.ajax({
url: "Default.aspx?ID=5",
dataType: "html",
cache: false,
success: function(html){
$(html).remove('script');
console.log(html);
var ajax_shoppingcart = $('#shoppingcart',html).html();
$('#shoppingcart').html(ajax_shoppingcart);
var ajax_basket = $('#topbanner_eshop',html).filter(":not(script)").html();
$('#topbanner_eshop').html(ajax_basket);
}
});
}
});
但问题是它加载到#topbanner_eshop的数据包含一些内联的javascript,它打破了页面。
尝试导入以下html:
<div id="topbanner_eshop">
<div>
<div>
<a href="Default.aspx?ID=24">Shop videre » </a>
</div>
<div>
2 varer i kurven
</div>
<div>
Total
</div>
<div>
<script type="text/javascript">
// var str="190,00";
var str="DKK 190,00";
document.write(str.replace(/,00/, ",-"));
</script>
</div>
</div>
</div>
但是当它到达内联脚本时,它会用脚本结果替换整个页面。
我做错了什么?
答案 0 :(得分:1)
嗯,首先,就是这样:
$(html).remove('script');
您明确删除了脚本元素。
然后,实际的脚本使用“document.write()”,一旦加载了包含页面,它将隐式销毁它。换句话说,调用“document.write()”会隐式调用“document.open()”,而后者会删除DOM。
而不是“document.write()”,你可以这样做:
<span id='amount'></span>
<script>
var str = "DKK 190,00"; // I presume that's actually a server-side thing
$('#amount').text(str.replace(/,00/, ',-'));
</script>
用服务器端代码修复字符串会好得多。
答案 1 :(得分:1)
jQuery正常运行。问题出在HTML代码上。在任何页面上调用document.write
都会用结果替换页面的全部内容,因此您可能想要使用其他内容。