我有一个使用 AJAX 提交的表单,但结果前面有 HTML,我需要能够获得"成功"或"失败"一词,但前面有 HTML,我不能。我是JS的新手,所以如果有一个简单的方法可以做到这一点,我不知道,而且我在谷歌上也没有找到任何东西。起初,我试图剥离 HTML 标签,如果标签中没有任何内容,这将起作用,但确实存在。
我用于发布的两个功能是:
public function postStatus() {
global $dbc;
if(isset($_POST['submit'])){
$user = mysqli_real_escape_string($dbc, trim($_POST['user']));
$body = mysqli_real_escape_string($dbc, trim($_POST['postBody']));
$query = "INSERT INTO `social_posts` (`pUID`,`body`,`date`) VALUES ('$user','$body',NOW())";
mysqli_query($dbc, $query);
$success = array(
"status" => "success",
"message" => "You've updated your status"
);
echo json_encode($success);
exit();
}
}
public function postForm(){
$UID = $_SESSION['uid'];
echo (
<<<EOD
<div class="shadowbar">
<div id="alert"></div>
<form id="socialPostForm" method="POST" action="/sendPost">
<textarea id="editor" name="postBody" placeholder="Status Post"></textarea>
<input type="hidden" value="$UID" name="user" />
<input class="Link LButton" type="submit" value="✔" name="submit" />
</form>
</div>
<script>
$(function post() {
$("#socialPostForm").validate({ // initialize the plugin
// any other options,
onkeyup: false,
rules: {
postBody: {
required: true
}
}
});
$('form').ajaxForm({
beforeSend: function() {
return $("#socialPostForm").valid();
},
success : function(result) {
var page = $(result);
var statusText = page.find('#status').text();
console.log(statusText);
if(statusText == "success"){
$("#alert").html("<div class='alert alert-success'>You've updated your status'</div>");
}else if(statusText == "failure"){
$("#alert").html("<div class='alert alert-"+result.status+"'>"+result.message+"</div>");
//$("#alert").show();
}
}
});
});
</script>
EOD
);
}
您可以将响应包装在$()
中,并像在页面中一样对待它,并使用jQuery方法提取所需的任何内容。
我不知道页面是什么样子或文本的位置,所以会假设它位于一个带有id=status
的元素中
success : function(result)
var $page = $(result);
var statusText = $.trim($page.find('#status').text());
// do something with the statusText
}
返回一整页是很多矫枉过正。一个简单的 json 响应会更轻。