不知何故,这不会给我一个警报或任何错误

时间:2017-03-24 00:01:19

标签: javascript

不知怎的,这段代码只是空白,并没有真正做任何事情。 甚至没有显示任何错误。 有人可以帮忙吗?

function connectStart(mycon){ //connection start for contacting 
    return function(){
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
        var jsonReturn = JSON.parse(this.responseText);

        mycon; //calls the makeAnn() Function

        }
    };
// mypref() stands for the preference code location for the myphp.php
xmlhttp.open("GET", mypref()+"myphp.php?q="+myvar,true);
xmlhttp.send();
        }
}

function makeAnn(){
    return function(){
    console.log(jsonReturn);
    if ( jsonReturn !== "NO"){
            alert("Announcement Was Posted");
    } else {
        alert("Error Encoding Data");
    }
        } //end of return function()
}

function mainFunction(){ //is called by an onclick event
var myvar = "I Shall Return!";
connectStart(makeAnn()); // i used invocation to combine them
}

不知何故,它从未在控制台日志中显示任何实际投诉或任何内容。 没有警报或其他什么。 不会写入发送到php或数据库的数据。 真的没有。 我已经尝试过Php和html,他们都很好。 只是我的代码的这一部分无法工作。

1 个答案:

答案 0 :(得分:0)

您没有在onreadystatechange处理程序中调用该函数。见下文。

function connectStart(mycon){ //connection start for contacting 
    return function(){
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
        var jsonReturn = JSON.parse(this.responseText);

        // mycon; //wouldn't do anything
           mycon(); // THIS should work better...
        }
    };
    // mypref() stands for the preference code location for the myphp.php
    xmlhttp.open("GET", mypref()+"myphp.php?q="+myvar,true);
    xmlhttp.send();
    }
}

编辑: 我现在注意到的另一个问题是你引用jsonReturn方式,超出了它的范围。

function connectStart(mycon){ //connection start for contacting 
    return function(){
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
        var jsonReturn = JSON.parse(this.responseText);

        mycon(jsonReturn); // pass jsonReturn as a parameter

        }
    };
// mypref() stands for the preference code location for the myphp.php
xmlhttp.open("GET", mypref()+"myphp.php?q="+myvar,true);
xmlhttp.send();
        }
}

function makeAnn(){
    return function(jsonReturn){ // pass in as a parameter

    console.log(jsonReturn);
    if ( jsonReturn !== "NO"){
            alert("Announcement Was Posted");
    } else {
        alert("Error Encoding Data");
    }
        } //end of return function()
}

function mainFunction(){ //is called by an onclick event
var myvar = "I Shall Return!";
connectStart(makeAnn()); // i used invocation to combine them
}