gpt4 book ai didi

javascript - if else 语句似乎同时运行

转载 作者:行者123 更新时间:2023-12-02 13:57:30 24 4
gpt4 key购买 nike

在我的 js erb 文件中,我的两条 Flash 消息都显示了,而实际上只有一条应该显示。 ajax 运行良好,我的响应是它应该的。但是,由于某种原因,我的 Flash 消息会同时显示 if 和 else 语句中的消息。我在 if 语句之前放置了一个调试器来测试我的响应,它的计算结果应该为 true。

$.ajax({
url: '/purchases/options',
method: 'post',
dataType: 'json',
data: data
}).done(function(response){
if(response.duplicate === "true"){
<% flash.now[:alert]= 'This Addressi Is Already In Your Cart Or In Your Report Section.' %>
}
else{

<% flash.now[:notice]= 'Searchs result is added to your cart' %>
}
});
$("<%= j render(:partial => 'layouts/messages') %>").insertBefore('form')[0];

最佳答案

由于 ERB 在发送到浏览器之前总是进行插值,因此您的浏览器基本上会看到以下内容:

if(response.duplicate === "true") {
} else {
}

你的服务器将会看到这个:

flash.now[:alert]= 'This Addressi Is Already In Your Cart Or In Your Report Section.'
flash.now[:notice]= 'Searchs result is added to your cart'

这基本上意味着您的服务器将始终运行这些flash行中的两者

您需要做的就是在没有 ERB 帮助的情况下将所有内容移至 JS 文件中,并在那里手动设置 Flash 文本。

例如,假设您的页面上某处有以下标记,它将作为 Flash 文本的“占位符”:

<div id="flash"></div>

然后在 JavaScript 中,您只需手动设置文本即可:

$("<%= j render(:partial => 'layouts/messages') %>").insertBefore('form')[0];

$.ajax({
url: '/purchases/options',
method: 'post',
dataType: 'json',
data: data
}).done(function(response){
if (response.duplicate === "true") {
$("#flash").text("This Addressi Is Already In Your Cart Or In Your Report Section.");
$("#flash").addClass("alert");
} else{
$("#flash").text("Searchs result is added to your cart");
$("#flash").addClass("notice");
}
});

关于javascript - if else 语句似乎同时运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40615372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com