Javascript 在没有警报语句的情况下,图像和文本不会在完成Ajax调用后的一次单击中更改
我制作了一个脚本,通过AJAX更新字段值,然后在页面上更改相关文本和图像,而无需重新加载。有多个这样的链接,其中一个的html是Javascript 在没有警报语句的情况下,图像和文本不会在完成Ajax调用后的一次单击中更改,javascript,html,jquery,Javascript,Html,Jquery,我制作了一个脚本,通过AJAX更新字段值,然后在页面上更改相关文本和图像,而无需重新加载。有多个这样的链接,其中一个的html是 <li> {% if object.attr1== 0 %} <IMG SRC="{{ STATIC_URL }}images/unchecked.jpeg"> {% else %} <IMG SRC="{{ STATIC_URL }}images/check.jpeg"> {
<li>
{% if object.attr1== 0 %}
<IMG SRC="{{ STATIC_URL }}images/unchecked.jpeg">
{% else %}
<IMG SRC="{{ STATIC_URL }}images/check.jpeg">
{% endif %}
<span style="padding-left:5px"><a id="update" title="Click to update status" href="/update/{{object.id}}/1/">Attribute Name</a>: </span>
<span id="sent_text">
{% if object.attr1 == 0 %}
Completed
{% else %}
Incomplete
{% endif %}
</span>
</li>
我的问题是AJAX
调用工作正常,对象状态正在更新,但是如果我删除警报
调用,图像和文本不会在一次单击中改变。如果有警报
调用,则图像和文本本身会发生变化
但是,如果我删除它,当我单击它两次时,就会发生更改。谁能告诉我为什么我会有这种奇怪的行为
更新:我知道这听起来很奇怪,但事实确实如此。我的脚本有时有效,有时现在有效。不工作是指AJAX
调用总是成功的,但有时负责更改文本和图像的脚本不工作。
这真是令人费解。让您的
在成功和错误块中返回false
把它弄出来会让它先执行,这可能就是原因alert()
停止脚本的执行,这就是为什么如果您有alert(),您会看到预期的结果
现在似乎出现了一些新问题。。我的js已完全停止工作,正在执行正常的post请求。在
console.log
属性列表GP_z(a=“cb=f32a292a501ea3a&orig…&ackData[id]=1&width=90”)/\uu/app…QQ/d=1/(第116行)Ye(a=message)之后,我可以看到这个错误?一次使用帖子,下一次使用AJAX?这是您的需求还是您只想执行AJAX请求?为什么要在AJAX回调中返回false?不,我不是同时发出POST请求和AJAX请求。事实上,我已经写了一个普通的POST请求作为一个回退,所以如果javascript中出现了一些问题或者它被禁用,那么正常的请求将通过。可能这不是解决方法。如果JS工作正常,并且没有被禁用怎么办?您试过小提琴了吗?因为我使用的是Django,所以在视图中,我编写了if request\u is\u ajax():
所以只执行了部分调用。是的,我把小提琴调高了三倍,但不知怎的,它在我的情况下不起作用
$(function() {
$("a#update").click(function(){
var curr_elem = $(this) ;
var link = $(this).attr("href");
$.ajax({
type: "POST",
url: link,
success: function()
{
var text = curr_elem.parent().parent().find('span#sent_text').text();
if (text == 'Completed')
{
curr_elem.parent().parent().find('span#sent_text').html('In complete');
curr_elem.parent().parent().find('IMG').attr("src", "/static/images/check.jpeg");
}
else
{
curr_elem.parent().parent().find('span#sent_text').html('Completed');
curr_elem.parent().parent().find('IMG').attr("src", "/static/images/unchecked.jpeg");
}
alert(text);
},
error: function(xhr, status, error)
{
alert("Function failed!");
}
});
return false;
});
});
$(function() {
$("a#update").click(function(){
var curr_elem = $(this) ;
var link = $(this).attr("href");
$.ajax({
type: "POST",
url: link,
success: function()
{
var text = curr_elem.parent().parent().find('span#sent_text').text();
if (text == 'Completed')
{
curr_elem.parent().parent().find('span#sent_text').html('In complete');
curr_elem.parent().parent().find('IMG').attr("src", "/static/images/check.jpeg");
}
else
{
curr_elem.parent().parent().find('span#sent_text').html('Completed');
curr_elem.parent().parent().find('IMG').attr("src", "/static/images/unchecked.jpeg");
}
return false;
},
error: function(xhr, status, error)
{
alert("Function failed!");
return false;
}
});
});
});