javascript - 无法在嵌套函数中捕获外部函数

时间:2017-06-17 15:43:29

标签: javascript ajax laravel-5

我为aJax编写了一个名为myCsrfAjax的自定义函数。

function myCsrfAjax(method, url, callback, jsonData) {
    var ajax = new XMLHttpRequest();
    ...
    ...
}

工作正常。但在这种情况下,我把它放在一些嵌套函数中,就像,

var app = require('express');
var http = require('http').Server(app);
var io = require('socket.io')(http);
io.on("connection", function (socket) {
    console.log("New Connection: " + socket.id);

    socket.on("disconnect", function () {
        console.log("disconnect:" + socket.id);
        myCsrfAjax("POST","/msgboard/removeid",function(data){
            console.log(data);
        },{"id":sockst.id});
        // ** ← even I defined 'function myCsrfAjax' here
    });
});

并且发生错误,它说“myCsrfAjax”未定义,即使我在**中定义了'function myCsrfAjax',它也会说“XMLHttpRequest”是未定义的,我需要在myCsrfAjax中使用它。我该如何解决这个问题,请帮助我。

1 个答案:

答案 0 :(得分:0)

var myCsrfAjax = function(method, url, callback, jsonData) {
    var ajax = new XMLHttpRequest();
    ...
    ...
}

将其分配到var范围之外的io.on(),就像在此行之后:

var io = require('socket.io')(http);