【问题标题】:getting input from click event in javascript and sending it to django or saving it as text file从javascript中的click事件获取输入并将其发送到django或将其保存为文本文件
【发布时间】:2018-02-26 15:59:59
【问题描述】:

我有一个 html 文件,它是一个数据框类。我为每一行添加了点击事件。我想将 fName、lName、Address、Zip 发送到 django views.py 以进行一些内部查询。我的印象是我需要为此使用ajax。我是 javascript 和 Ajax 的新手,不知道如何将其合并到代码中。任何帮助,将不胜感激。如果我有办法将这些变量保存到 txt 文件中,那么我可以在 Django 中调用另一个函数并这样做。不确定,如果将其保存到文本文件是正确的方法。

#sample HTML file

<table border="1" class="dataframe">
<thead>
  <tr style="text-align: right;">
    <th>first</th>
    <th>LastName</th>
    <th>Address</th>
    <th>zip</th>
    <th>State</th>
    </tr>
</thead>
<tbody>
  <tr>
    <td>mary</td>
    <td>poppins</td>
  <td>3345 leanie rd</td>
  <td>28277</td>
  <td>PA</td>
<tr>
   <td>honas</td>
   <td>bond</td>
   <td>1123 cavalry st</td>
   <td>38788</td>
   <td>GA</td>

function addRowHandlers(tableId) {
if(document.getElementById(tableId)!=null){
    var table = document.getElementById(tableId);
    var rows = table.getElementsByTagName('tr');
    var fname = '';
    var lname = '';
    var address = '';
    var zip = '';
    var State = '';
    for ( var i = 1; i < rows.length; i++) {

        rows[i].i = i;
        rows[i].onclick = function() {

            fname = table.rows[this.i].cells[0].innerHTML;                
            lname = table.rows[this.i].cells[1].innerHTML;
            address = table.rows[this.i].cells[2].innerHTML;
            zip = table.rows[this.i].cells[3].innerHTML;
            state = table.rows[this.i].cells[4].innerHTML;
            alert(fname +' ' + lname + ' ' + address +' '+ zip +' '+ state + ' ');
            };
        }
     }
}
</script>
#views.py
def query_result(request):
fname = request.GET(//what do I type here?//)

【问题讨论】:

  • 你不会在那里写任何东西,因为你没有从你的 Javascript 向后端发送任何东西。您需要某种在 onclick 处理程序中发送数据的 Ajax 函数。
  • 您好丹尼尔,感谢您的回复。 Ajax 是实现此目的的唯一方法吗?我对整个网络服务器开发都是新手。谢谢
  • Ajax 只是意味着通过 Javascript 发送请求,所以我不知道您还想做什么。如果您希望 Javascript 在您单击某些内容时发出请求并对响应执行某些操作,则需要 Ajax。
  • 我希望用户点击该行。并使用该行作为输入回到 django 中,我可以在其中查询数据库。所以我想 ajax 是要走的路
  • 否则,您可以只将该行设为链接,而根本不使用 Javascript。

标签: javascript html django python-3.x


【解决方案1】:

理想的解决方案是在单击行时发出 Ajax 请求并处理响应...您可以尝试的另一件事是将所有与表相关的数据加载到 python 中的 javascript Object/Array 中。在行上单击从该 javascript 对象获取相应的行数据。这种方法的问题是您将一次加载所有表数据。

【讨论】:

  • @omui 你能告诉我如何在点击时发出 ajax 请求吗?
  • 嗨@omui,感谢您的帮助。一个问题。在'#ajax' url 下,我要传递什么?在 django 下,我的 url 是127.0.0.1:8000。我将其作为参数传递吗?谢谢
  • 是的,就是 Ajax url。这将返回行数据。
  • @omui 所以我运行了你的代码。但是当我输入该网址时,我没有看到任何事情发生
  • 所以在我的 django 中。我的网址是:127.0.0.1:8000/search-form。当我输入名称时,可以说“名字、姓氏、地址、邮编和州”,它会将我带到我创建的另一个名为“搜索结果”的 URL,它返回一个可能名称的数据框。在那个网站上,我是否将结果存储在 search-results.html 中。我要把这个 url 放到 ajax url 中吗?
【解决方案2】:

您可以使用 p5.js 库,它有一个名为 httpPost() 的方法。它将您选择的元素的 JSON 数据发送到您的后端。也很容易使用,没有 ajax。

【讨论】:

  • 我无法使用 p5.js,因为我收到下载错误
  • 你是从官网下载的吗?老实说,您不应该收到任何下载错误。也可以使用缩小版。
猜你喜欢
  • 2023-04-05
  • 2018-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-01
  • 1970-01-01
相关资源
最近更新 更多