【发布时间】:2012-04-29 15:55:11
【问题描述】:
当变量 'f' 为 FALSE 时,我想返回 TRUE 或 FALSE。但是返回永远不会到达浏览器,并且表单会执行其默认操作。
如何让我的 ELSE 返回值? 我试图硬编码一个返回值而不是写 'return myFunction();' 这行得通,但它对我没有帮助,因为我需要从 'myFunction()强>'。
不要想太多代码应该做什么,它没有意义,它只是为了演示。
$('#theForm').submit(function()
{
var f = $('#theInput').val(); // input value
if(f == TRUE)
{
alert('Lorem ipsum');
return false;
}
else // If f is FALSE
{
$.post('/php/check.php',{check: f, function(data){myFunction(data);});
function myFunction(data)
{
if(data == 'false')
{
// Do something
return false;
}
else
{
// Do something
return true;
}
}
return myFunction();
}
});
我已经尝试过了,但它仍然没有从 'return myFunction()' 向表单返回值
$('#theForm').submit(function()
{
var f = $('#theInput').val(); // input value
if(f == true)
{
alert('Lorem ipsum');
return false; // Stop default form action
}
else // If f is FALSE
{
var request = $.ajax({
async: false,
url: "/php/checkArea.php",
type: "POST",
data: {data: f},
dataType: "text"
});
request.done(function(data) {
myFunction(data);
});
function myFunction(data)
{
if(data == 'false')
{
// Do something
return false; // Stop default form action
}
else
{
// Do something
return true; // YES PLEASE, do the default form action
}
}
return myFunction();
}
});
在你的帮助下,我终于想出了一个关于异步部分的解决方案。
$('#theForm').submit(function()
{
var f = $('#theInput').val(); // input value
if(f == true)
{
alert('Lorem ipsum');
return false; // Stop default form action
}
else // If f is FALSE
{
var request = $.ajax({
async: false,
url: "/php/checkArea.php",
type: "POST",
data: {data: f},
dataType: "text"
});
request.done(function(data) {
globalData = data; // Global variable
});
function myFunction(globalData)
{
if(globalData == 'false')
{
// Do something
return false; // Stop default form action
}
else
{
// Do something
return true; // YES PLEASE, do the default form action
}
}
return myFunction(globalData); // Call the function with the global variable
}
});
这很完美:-)
【问题讨论】:
-
您的 myFunction() 在您的
$.postAjax 调用返回值之前运行。使用 async: false 和你的 $.post -
现在试试下面我编辑的解决方案。它现在应该可以工作了,除非你做错了什么。
-
在您编辑的问题中将此行
data: {data: f},更改为data : f,
标签: php forms return return-value