Ajax变量问题

Ajax variable issue

本文关键字:问题 变量 Ajax      更新时间:2023-09-26

我有一个ajax变量问题,似乎不知道是什么原因造成的

var ajax = ajaxObj("POST", "feedback.php");

我达到了前警报,但没有达到后警报。

<script>
    function toShow(elem){
        var id = elem.value;
        var x = elem.checked;
        alert("before");
        var ajax = ajaxObj("POST", "feedback.php");
        alert("after");
        ajax.onreadystatechange = function() {
            _("status").innerHTML = "saving to feedback DB...";
            if(ajaxReturn(ajax) == true) {
                if(ajax.responseText != "update_success"){
                    status.innerHTML = ajax.responseText;
                    _("status").innerHTML = "it didn't work";
                } else {
                    _("status").innerHTML = "updated";
                }
            }
        }
        ajax.send("id="+id+"&x="+x);
    }
</script>

你知道是什么原因造成的吗?这段代码也适用于其他页面。

这是我的ajaxObj函数:

function ajaxObj( meth, url ) {
    var x = new XMLHttpRequest();
        x.open( meth, url, true );
        x.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    return x;
}
function ajaxReturn(x){
    if(x.readyState == 4 && x.status == 200){
        return true;    
    }
}

我认为在您的范围内的某个地方,x正在遭受重创。你几乎在每个函数中都使用它,一旦你犯了错误,作用域链就会默默地惩罚你。我可以保证,将那些x引用更改为有意义的名称将解决这个问题。

问题不太可能出现在代码块中,因为它在大多数情况下都有效。有什么东西在砸它。

这与我不久前遇到的一个问题类似:https://twitter.com/akamaozu/status/525494000288284672

也就是说。。。x在某个地方被覆盖。我不知道在哪里,因为需要更深入地查看代码才能确定真正的问题在哪里,但将这些x变量更改为真正有意义的变量。这将做两件事:

  • 使您的代码世界更可读
  • 阻止x被吊起