我有一个用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
);
}
答案 0 :(得分:1)
您可以将响应包装在$()
中,并将其视为与页面中的响应一样,并使用jQuery方法提取您需要的任何内容。
我不知道哪个页面看起来像或文本位于何处,因此假设它位于id=status
success : function(result)
var $page = $(result);
var statusText = $.trim($page.find('#status').text());
// do something with the statusText
}
要返回整页,这有点过分。简单的json响应会更轻。