在前面有html的时候获取JQuery结果

时间:2015-01-24 17:42:31

标签: javascript jquery ajax

我有一个用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
);
    }

1 个答案:

答案 0 :(得分:1)

您可以将响应包装在$()中,并将其视为与页面中的响应一样,并使用jQuery方法提取您需要的任何内容。

我不知道哪个页面看起来像或文本位于何处,因此假设它位于id=status

的元素中
success : function(result)
     var $page = $(result);
     var statusText = $.trim($page.find('#status').text());
     // do something with the statusText

}

要返回整页,这有点过分。简单的json响应会更轻。