Javascript 如何将ajax response.responseText设置为全局JS变量
我需要能够将我的ajax代码的responseText添加到变量中,这样我就可以将它添加到文本的一段中,但是我基本上没有任何JS方面的经验,因为我在这个项目期间能够用谷歌搜索到我,所以任何帮助都是非常值得的 我的代码如下所示:Javascript 如何将ajax response.responseText设置为全局JS变量,javascript,ajax,Javascript,Ajax,我需要能够将我的ajax代码的responseText添加到变量中,这样我就可以将它添加到文本的一段中,但是我基本上没有任何JS方面的经验,因为我在这个项目期间能够用谷歌搜索到我,所以任何帮助都是非常值得的 我的代码如下所示: var para = document.getElementById("canvasimgtext"); para.textContent = responseText $.ajax({ 类型:“POST”, url:“/ml/”, contentTyp
var para = document.getElementById("canvasimgtext");
para.textContent = responseText
$.ajax({
类型:“POST”,
url:“/ml/”,
contentType:“应用程序/base64”,
数据:window.dataURL,
数据类型:“base64”,
成功:功能(响应){
控制台日志(响应);
},
错误:函数(err){
控制台日志(err);
}
});
然后我需要能够像这样放置变量:
var para = document.getElementById("canvasimgtext");
para.textContent = responseText
其所属功能的全面扩展:
function save() {
window.dataURL = canvas.toDataURL();
document.getElementById("canvasimg").style.border = "2px solid";
document.getElementById("canvasimg").src = dataURL;
document.getElementById("canvasimg").style.display = "inline";
document.getElementById("canvasimg").width = 32;
document.getElementById("canvasimg").height = 32;
$.ajax({
type: "POST",
url: "/ml/",
contentType: "application/base64",
data: window.dataURL,
dataType: "base64",
success: function(response) {
console.log(response);
},
error: function(err) {
console.log(err);
}
});
var para = document.getElementById("canvasimgtext");
para.textContent = responseText
}
提前谢谢
编辑尝试给出的答案,但没有成功:
$.ajax({
type: "POST",
url: "/ml/",
contentType: "application/base64",
data: window.dataURL,
dataType: "base64",
success: function(response) {
var para = document.getElementById("canvasimgtext");
para.textContent = response;
},
error: function(err) {
console.log(err);
}
});
当放置在此处时,按下按钮时文本不再显示,即使传递的是简单字符串而不是变量
第二次编辑原来问题出在Flask没有返回成功但返回错误,所以这就是什么都没有发生的原因。如果我没有错,您希望在画布中显示API调用后的图像
function save() {
window.dataURL = canvas.toDataURL();
document.getElementById("canvasimg").style.border = "2px solid";
document.getElementById("canvasimg").src = dataURL;
document.getElementById("canvasimg").style.display = "inline";
document.getElementById("canvasimg").width = 32;
document.getElementById("canvasimg").height = 32;
$.ajax({
type: "POST",
url: "/ml/",
contentType: "application/base64",
data: window.dataURL,
dataType: "base64",
success: function(response) {
console.log();
var para = document.getElementById("canvasimgtext");
para.textContent = response
},
error: function(err) {
console.log(err);
}
});
}
因为AJAX是一个异步调用,所以应该在AJAX调用的成功块中更新画布的内容
您可能想进一步了解Aysnc调用和AJAX,这里有一个供您参考的链接:因为$.AJAX()
这是一个异步调用,您必须在成功
回调中运行逻辑
function save() {
window.dataURL = canvas.toDataURL();
document.getElementById('canvasimg').style.border = '2px solid';
document.getElementById('canvasimg').src = dataURL;
document.getElementById('canvasimg').style.display = 'inline';
document.getElementById('canvasimg').width = 32;
document.getElementById('canvasimg').height = 32;
$.ajax({
type: 'POST',
url: '/ml/',
contentType: 'application/base64',
data: window.dataURL,
dataType: 'base64',
success: function (response) {
var para = document.getElementById('canvasimgtext');
para.textContent = response.responseText;
},
error: function (err) {
console.log(err);
},
});
}
您可以选择使用jQuery ajax函数并使用async/await,read将responseText设置为全局并在成功时分配它response,但为什么需要它,只需使用$(“#canvasimgtext”).text(response);在success中,您在success中进行了控制台操作或移动了最后2行,并使用response而不是ResponseText这是success中的异步调用移动操作fail@AhmedSunny不幸的是,这两种解决方案都不起作用。你得到了回应吗?