javascript - 响应来自 python Web 应用程序的 ajax 请求

标签 javascript python ajax

我有一个使用 Flask 设置的 python Web 服务器,我试图向它发送一个 ajax 请求,然后处理答案。

这是js代码:

var ajaxObj = setXMLHttpRequest();

function setXMLHttpRequest(){
    var xhr = null;
    if(window.XMLHttpRequest){
        xhr = new XMLHttpRequest();
    }else if(window.ActiveXObject){
        xhr = new ActiveXObject("Microsoft.XMLHTTP0");
    }
    return xhr;
}

function sendAjaxRequest(){
    var url = "/refresh";
    ajaxObj.open("GET", url, true);
    ajaxObj.onreadystatechange = function(){ajaxAnswerManager()}
    ajaxObj.send(null);
}

function ajaxAnswerManager(){
    if(ajaxObj.readyState == 4){
        var result = ajaxObj.responseText;
        alert(result);
    }
}

如您所见,我将请求发送到/refresh 路由,但我不确定应该在 server.py 文件上的 app.route(/refresh) 之后定义什么函数,以及最重要的是如何发回答案。

我尝试定义一个简单的函数并通过 return 和 print 发送回结果,但它不起作用,有时我收到 500 内部服务器错误,其他时候警报只会打印回 ajax 请求的页面已发送。

/image/T1GGO.jpg /image/KZYaB.jpg

我在网上寻找解决方案或教程,但找不到适合我的情况的解决方案或教程(实际上我只找到了一个)

那么,我如何回答来自 pyhton 的 ajax 查询?

最佳答案

首先,请开始使用 jquery 来处理 AJAX 请求。它使用起来更容易,使用起来也更干净。上述代码片段只需使用以下代码即可实现:

$.ajax({
  url: '/refresh',
  type: 'GET',
  success: function(response){ alert( response ); }
})

在 python 脚本中,您可以执行以下操作来返回您想要的任何内容:

@app.route('/refresh')
def refresh:
    var_you_want = 'whatever you want to return'
    return json.dumps({ 'data': var_you_want })

500 内部服务器将指示 python 代码本身存在错误。 另外,因为你上面的python代码发送了一个json对象,所以在success函数中解析它是一个好主意:

$.ajax({
  url: '/refresh',
  type: 'GET',
  success: function(response){ alert( JSON.parse(response) ); }
})

关于javascript - 响应来自 python Web 应用程序的 ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32259779/

相关文章:

javascript - 在 Object.assign() 中使用 "var"而不是 "let"时出现未定义

javascript - JavaScript 可以在 UIWebView 中运行吗?

python - 使用 cython 将模块移植到 python 3.1

javascript - 模板代码创建指数数量的元素

php - IE 的 overrideMimeType 替代品

javascript - 双击 td 时如何在警告框中将数据库中的数据显示为 html 表

javascript - 如何将 "draw signature"添加到忍者表单

python字典mysql不插入

python - 在 Python 中使用 ElementTree 从 XML 中提取数据

javascript - 从 href 标签调用 div,但同时使其出现在地址栏链接中