调用$ .post()后,为什么返回true?

时间:2010-07-29 15:44:14

标签: javascript jquery ajax callback

我有一个函数返回另一个返回布尔值的函数,在此我做验证会导致异常行为。

该函数中的代码如下:

$.post( "classes/InsertCustomer.php", 
  { iResult: theResult.valid  },
  function(data)
  {
    alert(data);
  }); 
return true;

当这个运行时,帖子会发生,但不会返回任何内容。 但是,当最后一行是“return false”时,post会完美地执行并返回PHP文件中的数据。完全没有对PHP代码进行任何更改,只需在JavaScript中返回true和false。

这有什么明智的理由吗?

2 个答案:

答案 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事件处理程序有时间完成并触发。