我正在尝试在ajax成功函数中访问套接字io连接。
// Create socket connection
var socket = io.connect('http://localhost:81/');
// Ajax request gets auth token
$.ajax({
url: 'http://localhost:8000/foo',
xhrFields: {
withCredentials: true
},
success: function (result, textStatus, jqXHR) {
socket.on('connect', function () {
$('#rows').html(result);
socket.emit('message', result);
});
}
});
我该怎么做?如果我在成功函数中声明连接它可以正常工作
答案 0 :(得分:1)
你所展示的内容看起来很混乱。在ajax调用完成之前,connect
事件可能已经发生,因此您将完全错过它。
如果有合法的理由不想在插件连接之前将ajax结果插入DOM,那么你可以这样做:
// Ajax request gets auth token
// start ajax call, save promise
var p = $.ajax({
url: 'http://localhost:8000/foo',
xhrFields: {
withCredentials: true
}
});
// Create socket connection
var socket = io.connect('http://localhost:81/');
socket.on('connect', function () {
// when both socket is connected and ajax call is done, insert results into DOM
p.then(function(results) {
$('#rows').html(result);
socket.emit(result);
});
});