我有一个使用 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 响应会更轻松。
关于javascript - 当前面有html时获取JQuery结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28128333/