gpt4 book ai didi

javascript - 如何访问 jQuery.post 返回的特定元素的 HTML

转载 作者:行者123 更新时间:2023-11-30 16:45:26 25 4
gpt4 key购买 nike

我有一个网页,当用户单击特定元素时,会触发一个 javascript 函数,该函数使用 $.post()(即 jquery)将用户数据发送到修改数据库的 PHP 脚本。成功时,PHP 页面简单地打印

<p id='success'>Yay!</p>

失败时打印:

<p id='failure'>$some_error_message</p>

$.post 的回调部分然后检查其中哪些存在。成功时,它只显示一个现有的(当前隐藏的)元素。失败时,我想获取 $some_error_message 位,并将其放在我的页面上。

我找到了一种方法来执行此操作(如下所示),但它很笨重 - 我确信当我只想访问单个元素时我不应该使用“.each”函数。有更好的方法吗?

$.post('myURL.php', myData, function(retData)
{
if ( $(retData).filter('#success') )
{
$('#mySuccessDiv').show(200);
}
else if ($(retData).filter('#failure') )
{
$(retData).filter('#failure').each(function()
{
$('#myErrorDiv').html($(this).html());
});
}
else
$('#myErrorDiv').html("Unspecified Error");
}, "html");

正如我所说,使用 .each 似乎很浪费,但我不能简单地使用

$('#myErrorDiv').html($(retData).filter('#failure').html());

因为 .filter 返回一系列对象。但同样,我无法弄清楚如何只访问元素 0(因为我正在过滤 ID,所以只能有一个匹配项)。我试过:

$('#myErrorDiv').html($(retData).filter('#failure')[0].html());

但它不喜欢那样。

我是被迫使用 .each,还是我真的很迟钝?

最佳答案

.filter()将返回一个 jQuery 对象(有或没有任何元素),所以它总是真实的,看它是否返回任何你需要检查返回的 jQuery 对象的长度的元素

$.post('myURL.php', myData, function (retData) {
var $obj = $(retData);
if ($obj.filter('#success').length) {
$('#mySuccessDiv').show(200);
} else if ($obj.filter('#failure').length) {
$('#myErrorDiv').html($obj.html());
} else {
$('#myErrorDiv').html("Unspecified Error");
}
}, "html");

另一个解决方案是使用 .is()

$.post('myURL.php', myData, function (retData) {
var $obj = $(retData);
if ($obj.is('#success')) {
$('#mySuccessDiv').show(200);
} else if ($obj.is('#failure')) {
$('#myErrorDiv').html($obj.html());
} else {
$('#myErrorDiv').html("Unspecified Error");
}
}, "html");

关于javascript - 如何访问 jQuery.post 返回的特定元素的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31312489/

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