我用 PHP/JavaScript 开发了这个小型选项卡式系统。
对于表单提交,我将 JQuery 函数绑定(bind)到“提交”事件,该事件将 Ajax 查询发送到服务器,避免重新加载页面(并丢失其他选项卡)。我为每种表单编写了一个函数,但意识到它们是相同的(获取输入、发送 Ajax 查询、显示返回消息),因此我决定创建一个通用 jquery 函数,其中包含定义每种表单的参数)。
我有这个功能:
function submit_search(entity){
$('#'+entity.name+'_searchform').submit(function(){
var url = public_path+entity.name+'/search';
var key = $('#'+entity.name+'_search_key').val();
$.ajax({
type: 'POST',
url: url,
data: {search_key: key},
success: entity.submit_search(result)
});
return false;
});
}
其中entity
是一个JS对象,其中包含实体的名称和我要执行的成功函数。该函数是用脚本编写的,在加载主页时加载一次。当加载选项卡时,我只需使用实际实体调用 submit_search()
即可。
这对我来说似乎合乎逻辑。但这不起作用。问题是 jquery 无法识别元素,例如,在 var key = $('#'+entity.name+'_search_key').val();
之后,key 为 null。
我做错了什么?
最佳答案
您的成功函数将在请求之前执行
$.ajax({
type: 'POST',
url: url,
data: {search_key: key},
success: *entity.submit_search(result)*
})
我想submit_search不会返回指向函数的指针,所以 您需要将指针传递给submit_search
$.ajax({
type: 'POST',
url: url,
data: {search_key: key},
success: *entity.submit_search*
})
关于重新识别元素 - 确保您编写了正确的选择器。尝试在浏览器的调试/监视工具中对预期的表达进行硬编码,并检查是否正常,例如
$('#EntityNameValue_search_key').length > 0
关于javascript - 表单提交的通用jquery函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12640784/