Ajax变量问题

时间:2014-11-13 15:53:23

标签: javascript ajax

我有一个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;    
    }
}

1 个答案:

答案 0 :(得分:1)

我认为在你的范围内某处,x正在被破坏。你几乎在每个函数中都使用它,一旦你犯了错误,范围链会默默地惩罚你。我可以保证将这些x引用更改为有意义的名称将解决此问题。

问题不太可能出现在代码块中,因为它大部分时间都有效。有些东西正在破坏它。

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

也就是说...... x被某处覆盖了。我不知道在哪里,因为它会更深入地查看您的代码以确定真正的问题所在,但将这些x变量更改为实际有意义的内容。这将做两件事:

  • 让您的代码世界更具可读性
  • 防止x被吊起