Как сделать запрос к серверу JavaScript - PullRequest
1 голос
/ 07 февраля 2011

Я пытаюсь сделать запрос JavaScript к серверу Json, настроенному на сайте.Я обработал разрешения на сайте, чтобы я мог сохранять комментарии с помощью модуля веб-сервиса.Дело в том, что я должен использовать JavaScript, чтобы сделать это, и я попробовал это:

function CommentThis()
{
    var comment_object = 
            {
                "nid": 3,     "comment": "Hello!This is my comment...", 
                "cid": 2,     "subject": "My comment",     "uid": 1  
            };
    var data= 
        {
        "method": "comment.save",
        "comment": comment_object
        }; 

    var jsonRequest = new Request.JSON(
                {
                url: "http://my_site.com/?q=services/json",
                onSuccess: function(response){
                    var myDataArray = response['#data'];
                    document.writeln(myDataArray[16]);
                                 }
                }
            ).send({ data: data });

}

Firebug говорит, что запрос не определен.Дело в том, что я не знаю, как создать этот класс JSON запроса.Пожалуйста, помогите.

Ответы [ 3 ]

1 голос
/ 07 февраля 2011

Если вы собираетесь использовать такую ​​функциональность чаще, я предлагаю для этого использовать Framework.Я лично предлагаю jQuery, но так как вы пытаетесь использовать функцию Mootools, вы можете попробовать ее.Если вам не нравится ни один из них, вы можете попробовать Prototype.

Если вы не хотите использовать какую-либо платформу, вы должны использовать объект XMLHTTPREQUEST.На W3C есть документация .

0 голосов
/ 04 июля 2012

Вы можете сделать это с помощью объекта XMLHttpRequest.Вот вспомогательная функция, с которой можно начать.

function ajax( url, settings ) {

    var ajax = new window.XMLHttpRequest(),
        data = settings.type == 'GET' ? '' : settings.data;
    url = settings.type == 'GET' ? url + ( settings.data ? '?' + settings.data : '' ) : url;

    ajax.onreadystatechange = function () {

        if ( ajax.readyState == 4 ) { //response ready

            if ( ajax.status == 200 ) { //success
                if ( settings.success ) settings.success( ajax.responseText, ajax.statusText );
            } else {
                if ( settings.error ) settings.error( ajax, ajax.status, ajax.statusText );
            };

        };

    };

    ajax.open( settings.type, url );
    ajax.send( data );

};

А вот и ваша функция, переписанная для ее использования:

function commentThis() {

    var comment_object = {
            "nid": 3, "comment": "Hello!This is my comment...", 
            "cid": 2, "subject": "My comment", "uid": 1  
            },
        data = {
            "method": "comment.save",
            "comment": comment_object
            };

    ajax( "http://my_site.com/?q=services/json", {

        "type": "GET",
        "data": data,
        "success": function ( data, status ) {

            var myDataArray = data['#data'];
            document.writeln(myDataArray[16]);

        }

    } );

};
0 голосов
/ 07 февраля 2011

Вы также не хотите использовать

 document.writeln(myDataArray[16]);

Document.writeln () очистит всю страницу после завершения рендеринга DOM.Вы хотите манипулировать DOM, используя jQuery, mootools или тому подобное.Кроме того, объект ответа, вероятно, необходимо проанализировать с Json на объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...