【发布时间】:2016-04-05 03:27:13
【问题描述】:
不确定您是否会得到我想要的东西,因为 Fiddle 不能(或者我不知道如何)模仿网络应用程序的行为。我在表格中有一个下拉 HTML 表单。当我使用 AJAX 发送选择时,PHP 返回食物的名称(对于 1. 它应该返回 tuna,对于 2. 它应该返回 ham 等...)。我希望立即显示名称,但是....
$('td.editable').click(function () {
//$(this).off("click");
var form = '<select id="choice" onChange="doSomething(this.value)">\
<option disabled selected></option>\
<option value="1">1</option>\
<option value="2">2</option>\
<option value="3">3</option>\
</select>';
$(this).html(form);
});
当我注释掉JS的第二行时,下拉菜单一直隐藏,如果你想做出选择你必须一直按住LMB。但是,当响应来自 AJAX 时,它被插入到单元格中,如果您认为这不是您的正确选择,您可以改变主意。这是我想要的最后一件事。
当我离开 JS 的第二行时,下拉菜单正常运行,AJAX 从 PHP 获取食物名称,并将其写入单元格中。问题是下拉菜单变得功能失调。
<td>单元格不再对点击做出反应,如果您决定改变主意,则必须重新加载页面以使其再次可点击。如何解决这个糟糕的用户界面?
这里是PHP调用方案,仅供参考...
function doSomething(val){
$.ajax({
type: "POST",
url: "choice.php",
data: { choice: val },
dataType: "text",
success: function (response) {
$("td.editable").html(response);
}
});
}
【问题讨论】:
-
在你的小提琴中我得到
Uncaught ReferenceError: doSomething is not defined你有一个函数可以在你的实际代码中使用onChange="doSomething(this.value)"吗? -
是的,它调用 PHP 文件来完成这项工作,并返回一个字符串。 'response' 变量没问题。
标签: jquery ajax forms overwrite dropdown