在ajax函数中隐藏jquery元素
我试图使用jquery和$ .ajax()方法提交表单。 在向服务器提交信息时,我只希望保留结果,并隐藏页面的其余部分。 我是否能够在ajax方法中添加条件,该方法指出“if(成功)然后显示结果,同时隐藏h1,h2和p元素(仅保留返回的文本;否则if(错误)”然后只显示错误消息在页面底部我的div占位符里面没有.hide() – 任何元素。所以当ajax方法成功时,我希望隐藏所有元素,除了div占位符中返回的文本。如果发生错误(表单留空)然后在div占位符中显示错误消息,同时保留所有元素。
更新:
当我在我的例子中使用警报时,它们总是成功。 ajax / jquery无法识别我的if语句。 知道这里可能会发生什么吗?
HTML:
jQuery的/阿贾克斯
$(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.; }
试试这个
$('#display').text(result);
我希望它有所帮助
我认为添加类更好。 在你的CSS中的例子
.test{ background-color:#000000;}
成功
$('#display').addClass("test");
或者你可以直接添加
$('#display').css('background-color','block');
我以为你的问题在你的CSS中。
你忘了添加你的ajax。
type: "post"
由于您没有显示任何validation的PHP代码,我不知道您的代码看起来如何,但您必须执行以下操作:
以下内容应放在form.php
文件的顶部:
if(isset($_POST['name'])){ // return either true/false depending on validation // By default set the success message $success = true; $message = 'My success message'; // now do your conditional checks and based on that change to false // Example: when validation fails on name: if($_POST['name']==''){ $success = false; $message = 'My error message: (Name is a required field)'; } // convert array to json, so we can read it out nicely on ajax return echo json_encode($result); // stop rest of our code exit; }
然后将您的ajax成功更改为:
请注意:
从jQuery 3.0开始,不推荐使用
$.parseJSON
。 要解析JSON字符串,请使用本机JSON.parse
方法。
success: function (result) { // Read the json string to proper object, for jQuery 3.0+ use native method instead var $data = jQuery.parseJSON(result); // Check if there where no validation problems if($data.success==true){ // Write success message to DOM element $('#display').html($data.message); }else{ // Write error message to DOM element $('#display').html($data.message); } },