gpt4 book ai didi

php - jQuery AJAX 回调 : identify if the return value from the PHP code has a given pattern

转载 作者:行者123 更新时间:2023-12-01 06:48:58 30 4
gpt4 key购买 nike

目标:
有一个登录表单,用户可以在其中输入用户名和密码,然后单击登录按钮(type="submit")。我试图确定 PHP 代码的返回值中是否包含模式 "FailText" 。如果是,则在 div "signinAlert" 中显示消息,否则(如果登录成功)重定向到用户的主页。

代码:

<form id="loginForm" name="loginForm" method="POST">
<table>
<tr>
<td><input class="input_home" type="text" name="username" id="email" size="30" placeholder="E-mail Address" /></td>
</tr>
<tr>
<td><input class="input_home" type="password" name="password" id="password" size="30" maxlength="12" placeholder="Password" /></td>
</tr>
<tr>
<td style="text-align: right;"><a href="#" title="Forgot Password">Forgot Password?</a>&nbsp;&nbsp;<input type="submit" class="Button" value="Sign In" id="login" onclick="return DisplayLoginError()"; /></td>
</tr>
</table>
</form>

这是我的 JavaScript 函数。

function DisplayLoginError()
{
var loginForm = document.loginForm;

var dataString = $(loginForm).serialize();

$.ajax ({
type: 'POST',
url: 'login.php',
data: dataString,
success: function(data){
var result = data;
var patt1=new RegExp("FailText");
if (patt1.test(result))
{
$('#signinAlert').html(data);
$('#signinAlert').css('display','block');
}
else
{
window.location = "home/";
}
}
});
return false;
}

问题:我坚信上面的 JavaScript 代码非常草率(因为登录尝试成功时进行 RegExp 评估)。还有其他方法可以达到目的吗?顺便说一下,上述方法适用于所有主流浏览器。

最佳答案

这是我的首选。并不是说它是完美的,但它是我已经使用了一段时间的。只是意味着所有错误消息都存储在 PHP 中,而不是存储在 JS 文件中(我更喜欢后者)。另请注意,以下代码未经测试。

编辑:请注意为什么我更喜欢 PHP 而不是 JS 中的错误。我通常有一个包含错误的表格,这意味着我只需输入 oh this is ERR-002, output the message associated with it 即可输出错误代码和消息。 。当有人打电话询问 ERR-002 时,我只需要检查数据库(而不是通过代码进行搜索)。

在你的login.php页面上,你可以返回一个javascript可以解码的json编码数组。所以在你的 php 中:

<?php 

$arrResult = array("message" => "Could not log you in", "type" => "error");
// Or the success one:
// $arrResult = array("message" => "You're logged in", "type" => "success");
echo json_encode($arrResult);

?>

然后您可以解码此消息并将其用作 JavaScript 中的对象,如下所示:

function DisplayLoginError()
{
var loginForm = document.loginForm;

var dataString = $(loginForm).serialize();

$.ajax ({
type: 'POST',
url: 'login.php',
data: dataString,
success: function(strResponse){
var $objResponse = $.parseJSON(strResponse);

if ($objResponse.type == "success")
{
window.location = "home/";
}
else
{
$('#signinAlert').html($objResponse.message).css('display','block');
}
}
});
return false;
}

关于php - jQuery AJAX 回调 : identify if the return value from the PHP code has a given pattern,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18052379/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com