当前面有 html 时获取 JQuery 结果



我有一个使用 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="&#10004;" 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 响应会更轻。

最新更新