Проблемы с Ajax Javascript - PullRequest
0 голосов
/ 01 марта 2011

У меня проблема с областью JavaScript, я хочу взять текст ответа от вызова ajax и поместить его в глобальную переменную.Затем обработайте JSON в другой функции, вот мой код.

var JSONDATA = "not gatherd";
var ajaxCalls = (function(){

                var ajaxer = {                  

                    defaults:{
                        url:"test.php",
                        DirectHTML: true,
                        element:"#ajaxerizer"               
                    },                  
                    setup:function(setup){              
                        var defaulLengther = this.defaults

                        for (var key in defaulLengther)
                        {
                            if(setup.hasOwnProperty(key))
                            {   
                                this.defaults[key] = setup[key];

                            }
                        }

                        if(this.defaults.DirectHTML === false)
                        {

                            if (window.XMLHttpRequest) {
                                this.ajaxRequester = new XMLHttpRequest();
                            }
                            if (window.ActiveXObject) {
                                this.ajaxRequester = new ActiveXObject("Microsoft.XMLHTTP");
                            }
                            this.ajaxRequester.open('POST', this.defaults.url, true);
                            this.ajaxRequester.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                            this.ajaxRequester.send();
                        }
                        this.callIt();
                    },                  


                    callIt:function(){
                        if(this.defaults.DirectHTML === true)
                        {
                            $(this.defaults.element).load(this.defaults.url);
                        }

                        if(this.defaults.DirectHTML === false)
                        {       

                            this.ajaxRequester.onreadystatechange = function(){
                                if (this.readyState == 4) {
                                    //This is where I have trouble
                                    alert(this.responseText);
                                    JSONDATA = this.responseText;//This is the data I want to process and use
                                    alert(JSONDATA);
                                }

                            }
                        }

                    }


                }
                return ajaxer

            })();

Вот индекс

<!DOCTYPE html>
<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
        <script src="simpleHtmlAjax.js"></script>

    </head>
    <body>
        <div id="ajaxerizer">   
            <script>
                ajaxCalls.setup({
                            url:"json.php",
                            DirectHTML: false,
                    });
                    alert(JSONDATA);
            </script>
        </div>

    </body>
</html>

и данные JSON

<?php
$json = array("one" => 1,"two" => 2,"three" => 3,"four" => 4);
echo json_encode($json);
?>

Спасибо залюбая помощь.

1 Ответ

0 голосов
/ 01 марта 2011

Вы уже включили jQuery в свой HTML, так почему бы просто не использовать вспомогательные функции JJuery AJAX для автоматической обработки данных JSON?

$.post("json.php", function (data) {
    // do something with data, which should be a plain JS object:
    // {"one":1, "two":2, "three":3, "four":4}
}, "json");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...