angularJS & web2py: calling python from ng/javascript/ht

angularJS & web2py: calling python from ng/javascript/html

本文关键字:ng from javascript ht python calling amp web2py angularJS      更新时间:2023-09-26

我在一个应用程序中使用AngularJS(主要是客户端)和web2py(主要是服务器端)。

我现在有个问题。

在程序的某一点上,我使用AngularJS从客户端获取一些数据,这些数据存储在AngularJS变量中。我计划使用$http。Post想直接提交这些数据到数据库,但是由于跨域问题不能正常工作。

现在我正试图传递这些数据(它们是JSON格式)回到web2py,让web2py插入这些数据到数据库。(类似于提交SQLFORM)。

无论如何,我可以传递这些数据作为一个参数web2py函数和调用javascript代码中的函数?

我脑海中可能的方法:1)既然我可以在html中使用{{}}编写python,我可以在javascript中编写html,我可以在javascript中使用类似于:document.write({{python code}})的东西编写python代码吗?

我试过这个,但无论我写什么html它去一个全新的html页面。我也试过document.getElementById('testDiv').write("<p></p>");,但它不起作用。

2)使用ajax,我不熟悉ajax,任何例子都会非常感激!

任何想法吗?

谢谢大家!

好了,你把我弄糊涂了,让我们看看我写的对不对1-角作为你的前端2 . python作为后台

3-你正在用python呈现HTML文档并将其交付给浏览器由于python模板语言使用{{}}作为分隔符,我假设您也更改了angular的分隔符

无论使用ajax还是重载,您都需要提供一个python post处理程序脚本。它获取数据并更新数据库。如果这是一个模式,你要做AJAX CRUD操作,你应该使用angular资源ngResource,如果不是一个简单的
$http.post(url,data).success(function(response){})

https://docs.angularjs.org/api/ng/service/http # post美元

其中url为表单提交处理程序url。如果要使用表单,则需要将目标设置为隐藏在页面中的iframe,并且响应应该是一个脚本标记,该脚本标记获得与控制器相关的作用域,并让控制器知道操作的结果。这是一个旧的方法,但方便的时候,它来发送信息的网站,不允许CORS,顺便说一句,这可能是你的问题的解决方案,当存储数据直接到你的数据库,你可能只需要启用CORS头在你的存储引擎API,这应该允许你提交信息,即使来自不同的域

经过几个小时的挣扎和无数次的谷歌搜索,这是我的变通方案:

主要问题:数据存储在AngularJS中,但由于跨域问题,AngulatJS无法通过API向数据库提交数据。但是Web2py可以使用sqlform向数据库提交数据。

我的方法:1.)当用户单击提交按钮时,调用'ng-click="submitBtn()"'。submitBtn()是ng-controller的一个函数,它可以访问数据。2.)在submitBtn()中,函数首先通过

将数据写入web2py的sqlform。
document.getElementById('inputId').value=$scope.data;

然后函数通过

点击sqlform提交按钮
document.getElementById('submitBtn').click();

我花了很多时间来找出web2py自动生成的sqlform中字段的元素id。找到它们的方法是在浏览器中使用开发人员的inspect元素工具并直接查看源代码。

希望这将帮助有人将面临同样的问题!