我有一个函数返回另一个返回布尔值的函数,在此我做验证会导致异常行为。
该函数中的代码如下:
$.post( "classes/InsertCustomer.php",
{ iResult: theResult.valid },
function(data)
{
alert(data);
});
return true;
当这个运行时,帖子会发生,但不会返回任何内容。 但是,当最后一行是“return false”时,post会完美地执行并返回PHP文件中的数据。完全没有对PHP代码进行任何更改,只需在JavaScript中返回true和false。
这有什么明智的理由吗?
答案 0 :(得分:1)
返回值用于阻止事件的默认操作。如果您在链接或提交表单的过程中调用此JS函数,则return true
将指示链接或表单元素继续执行它所要求的默认操作(例如,在链接{之后{1}}或转而形成href
)。你的很有可能进入同一页面,从而基本上刷新页面。执行action
会阻止此操作并保持同一页面。
在不引人注目的JS中,当您通过异步(ajaxical)操作替换同步操作时,您经常喜欢return false
。然而,为了优雅降级,你应该注意它在禁用JS时也能正常工作(就像函数return false
),当前显然并非如此。在您的webbrowser中禁用JS并重新测试。在这种情况下,你希望一切都能正常运作。
答案 1 :(得分:0)
这是在onsubmit上运行,试图让它做一个ajax表单提交而不是“真正的”吗?您的“返回true”不是$ .post的一部分,因此可能会告诉它继续执行默认操作所处的事件处理程序。
如果这是表单提交,那么上述内容将导致表单提交到其默认位置,该位置可能是其自身。这可能会导致它只是重新加载页面,这会导致等待.post响应的事件处理程序丢失。
当你将其设置为返回false时,它会告诉页面不执行默认操作(提交),因此它将保留在页面上,从而使post compelte事件处理程序有时间完成并触发。