Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将ajax response.responseText设置为全局JS变量_Javascript_Ajax - Fatal编程技术网

Javascript 如何将ajax response.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

我需要能够将我的ajax代码的responseText添加到变量中,这样我就可以将它添加到文本的一段中,但是我基本上没有任何JS方面的经验,因为我在这个项目期间能够用谷歌搜索到我,所以任何帮助都是非常值得的

我的代码如下所示:

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不幸的是,这两种解决方案都不起作用。你得到了回应吗?