Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.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
如何使用实体键(或其他对象)从html调用javascript_Javascript_Html_Google App Engine_Entity - Fatal编程技术网

如何使用实体键(或其他对象)从html调用javascript

如何使用实体键(或其他对象)从html调用javascript,javascript,html,google-app-engine,entity,Javascript,Html,Google App Engine,Entity,如何创建一个按钮,在他的onClick事件中使用对象调用函数?我的特殊情况下的实体密钥 我填充数据库中所有对象的表,并希望添加删除按钮。。。删除功能需要密钥,但我无法使其工作 类似于以下内容的内容不起作用: htmlString += "<td class='devicenameCol'><input id=\"deleteQuestion\" type=\"button\" value=\"löschen\" onclick=\"deleteQuestion(" + item

如何创建一个按钮,在他的
onClick
事件中使用对象调用函数?我的特殊情况下的实体密钥

我填充数据库中所有对象的表,并希望添加删除按钮。。。删除功能需要密钥,但我无法使其工作

类似于以下内容的内容不起作用:

htmlString += "<td class='devicenameCol'><input id=\"deleteQuestion\" type=\"button\" value=\"löschen\" onclick=\"deleteQuestion(" + item.key + ");\"/></td>";
htmlString+=”;

有几种方法可以做到这一点。如果使用的是
onclick
属性,则可以使用如下参数调用该方法:

<button onclick="myFunction(value)" />
在myHandler函数中,此指针被设置为元素,因此您可以简单地读取数据键属性:

function myHandler(){
    var key = this.getAttribute("data-key");
    //Code to perform delete
}

我在表格中使用此HTML/Jinja代码在表格行中创建按钮:

<td class="center"><input class="button" type="submit" name="eid={{ rows.eid }}" value="{{ rows.caption }}"></td>

其中:

  • rows.eid包含实体id
  • rows.caption包含按钮文本

我使用“eid=”作为令牌在请求数据中查找按钮(令牌)

我尝试过这样的事情,问题是,我需要像序列化这样的东西。。。因为在html部分,每个对象都会被转换成“object object”,这就是我的问题……我明白了,我误解了。这可能是因为您的
item.key
不是一个基本值,而是一个对象。无论何时执行object.toString()操作,都会得到“[object]”结果。您应该调试脚本,看看item.key实际包含的值是多少!在您的示例中,看起来您直接将键对象本身作为参数传递。将密钥用作网页上的参数时,应将其设置为urlsafe:
key\u safe=item.key.urlsafe()
。当读回密钥时,您可以执行以下操作:
key=ndb.key(urlsafe=key\u-safe)
。实际上,我现在将我的“id”从key改为Long。。。但那看起来和我要找的一模一样。。。今晚我会看一看。。。谢谢你能告诉我如何让urlsafe方法发挥作用吗?chrome调试器,我得到一个例外,没有urlsafe函数。。。我可以用javascript实现吗?或者我必须在java中完成所有这些,并将urlsafe数据添加到我的对象中吗?因为您没有指定它是java,所以我的答案基于Python SDK。但是,要回答您的问题:是的,需要在服务器上为密钥实例运行urlsafe方法。似乎
key.urlsafe()
的Java等价物是
KeyFactory.keyToString()
KeyFactory.stringToKey()
,它们是“web安全的”。这是。非常感谢,这对我很有帮助
button.addEventListener("click", myHandler)
function myHandler(){
    var key = this.getAttribute("data-key");
    //Code to perform delete
}
<td class="center"><input class="button" type="submit" name="eid={{ rows.eid }}" value="{{ rows.caption }}"></td>