通过ajax获取返回值

编程入门 行业动态 更新时间:2024-10-22 17:39:11
本文介绍了通过ajax获取返回值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有一个python脚本,我正在使用按钮和带有ajax的javascript从表单中调用该脚本.我真的很难到达python脚本返回的返回变量.

I have a python script which I'm calling from within a form using a button and some javascript with ajax. I'm really struggling to get to the returned variable which the python script returns.

所有返回的信息似乎是按错误的顺序发生的,可能不是这种情况,而是它对我的外观.我想要的只是能够获取python脚本返回的数据.如此简单的事情怎么会如此困难!

The information which is getting returned all seems to be happening in the wrong order, which is probably not the case but its how it looks to me. All I want is to be able to get the data which my python script returns. How can something so simple be so hard!!

任何帮助将不胜感激.谢谢

Any help will be appreciated. Thanks

这是我的代码:

<script> function drawgraph() { var x = draw() alert(x) }; </script> <script> function draw() { alert("Hello"); $.ajax({ url: "/currentcost.py", success: function(response){ alert("Success"); return response; //here you do whatever you want with the response variable } }); alert("World"); } </script>

我得到的答复是你好",世界",未定义"和成功"

The responses I get are "Hello", "World", "Undefined" and "Success"

这对我说ajax函数实际上直到我的javascript函数完成后才真正完成,这实际上并不能帮助我真正掌握返回的变量,因此以后可以在javascript中使用它

This says to me the ajax function isn't actually completing until AFTER my javascript function has finished which doesn't help me actually get hold of the returned variable so I can use it in the javascript later on

克里斯

编辑.

<head> <title>Line Chart</title> <script> var ajaxResponse = "" </script> <script src="Chart.js"></script> <script src="jquery.js"></script> <script> function drawgraph() { function handleResponse(response) { ajaxResponse = response; } draw(handleResponse); }; function draw(handleResponse) { $.ajax({ url: "/currentcost.py", success: function(response){ handleResponse(response); } }); } </script> <script> function alertbox() { alert(ajaxResponse); } </script>

Currentcost.py:

Currentcost.py:

导入MySQLdb

def index(req):dtbox = req.form.getfirst('dt','')tmbox = req.form.getfirst('tm','')

def index(req): dtbox = req.form.getfirst('dt', '') tmbox = req.form.getfirst('tm', '')

con = MySQLdb.connect('localhost', 'root', '', 'mydb') with con: cur = con.cursor(MySQLdb.cursors.DictCursor) s = "SELECT tmp, watts FROM currentcost WHERE dt ='" + dtbox + "' and tm like '" + tmbox + "%'" cur.execute (s) rows = cur.fetchall() x="" y="" for row in rows: x=x+row["watts"]+"," y=y+row["tmp"]+"," x="data:["+x+"]" y="data:["+y+"]" con.close() req.write(x)

推荐答案

JavaScript是异步的.当您警告 x 时,很可能是 undefined ,因为尚未收到ajax响应,或者甚至没有启动ajax.传递一个可以处理响应的回调函数,而不是返回它:

Javascript is asynchronous. When you alert x it will most likely be undefined because the ajax response is not received yet, or ajax is not even started. Pass a callback function that can handle the response, instead of returning it :

//global variable holding the response //substitutes your x var ajaxResponse; function drawgraph() { function handleResponse(response) { ajaxResponse = response; //here you may want to do something with the response //like calling a function that uses the global variable ajaxResponse //alert(response); } draw(handleResponse); }; function draw(handleReponse) { $.ajax({ url: "/currentcost.py", success: function(response){ handleResponse(response); } }); }

编辑

在我的小测试中,我只是在

Edit

In my little test I just called drawgraph in a

$(document).ready(function() { drawgraph(); }

例如,页面加载时.一次.您不清楚如何触发它.如果单击按钮,并且按钮 id 是"button",则< button id ="button"> click</button>

Eg, on page load. Once. It was onclear how you wanted to trigger it. If click on a button, and the button id is "button", <button id="button">click</button>

$('#button').click(function() { drawgraph(); }

执行链:

  • 某事叫drawgraph
  • drawgraph调用draw并传递一个回调函数
  • 成功执行ajax时,将在响应中调用回调函数
  • 由于javascript是异步的,因此必须等待",然后才能继续进行其余的代码",并且最好的方法是从$ .ajax成功内部继续执行.

    Because javascript is asynchronous, you have to "wait" before you can "carry on with the rest of the code", and the best way is to continue execution from inside $.ajax success.

    更多推荐

    通过ajax获取返回值

    本文发布于:2023-10-28 18:14:15,感谢您对本站的认可!
    本文链接:https://www.elefans.com/category/jswz/34/1537391.html
    版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
    本文标签:返回值   ajax

    发布评论

    评论列表 (有 0 条评论)
    草根站长

    >www.elefans.com

    编程频道|电子爱好者 - 技术资讯及电子产品介绍!