【发布时间】:2018-08-13 20:19:25
【问题描述】:
我正在尝试使用 jquery 和 $.ajax () 方法提交表单。将信息提交到服务器时,我只希望保留结果并隐藏页面的其余部分。我是否能够在 ajax 方法中添加一个条件,说明“if(success) 然后显示结果,同时隐藏 h1、h2 和 p 元素(只留下返回的文本;else if (error) 然后只显示错误消息在页面底部的 div 占位符内,没有 .hide()-ing 任何元素。因此,在 ajax 方法成功后,我希望隐藏除 div 占位符中返回的文本之外的所有元素。如果发生错误(表单留空)然后在 div 占位符中显示错误消息,同时保留所有元素。
更新:
当我在示例中使用警报时,它们总是显示为成功。 ajax/jquery 无法识别我的 if 语句。知道这里可能发生了什么吗?
HTML:
<form id="form" action="form.php">
<label for="name">Name: </label>
<input type="text" id="name" name="name">
<label for="phone">Phone: </label>
<input type="text" id="phone" name="phone">
</form>
<input type="submit" id="clickMe" value="Send" class="clear">
<p id="display"> </p>
jQuery/Ajax
$(document).ready(function() {
$("#clickMe").click(function(event){
event.preventDefault();
var myData = $('#form').serialize();
$.ajax({
url: 'form.php',
data: myData,
success: function (result) {
$('#display').html(result);
if(myData.indexOf("Thank")){
alert("success")
}
},
error: function (xhr, status, error) {
$('#display').html("Error: " + xhr.status + " " + xhr.statusText);
if(myData.indexOf("Something went wrong")){
alert("error");
}
}
});
});
});
PHP
if(!empty($_GET['name'])
echo "Thank you for your messsage ";
else {
echo "Something went wrong.;
}
【问题讨论】:
-
什么 CSS/样式?我在您的代码中没有看到任何内容。
-
你的css在哪里?
-
@Rens;抱歉,基本上我只想在信息通过服务器并返回后显示部分 html(表单信息)。因此,如果出现错误,我会在页面底部收到一条错误消息,如果成功,我希望隐藏所有内容,但显示(结果)。我尝试使用 $('h1 , h2, #p1, input').hide();" 但即使是错误也会隐藏所有内容。我只希望它在 ajax 成功时隐藏。不确定是否可以使用带有 ajax 选项的条件??
-
你能否改变你提出这个问题的方式,这是一个奇怪的问题:“我只希望保留结果,但只保留表单的部分”
-
很抱歉。我想使用 hide 方法隐藏除了表单返回的结果之外的所有内容。如果出现错误,则不应“隐藏”任何内容。