如何发出JavaScript Server请求

时间:2011-02-07 13:34:36

标签: javascript ajax json

我正在尝试向站点上配置的Json服务器发出JavaScript请求。我已经处理了网站上的权限,因此我可以使用Web服务模块保存注释。问题是我必须使用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说没有定义请求。 事实是我不知道如何构造这个Request JSON类。请帮忙。

3 个答案:

答案 0 :(得分:1)

如果您打算更频繁地使用这种功能,我建议使用Framework。我个人建议使用jQuery,但是既然你正在尝试Mootools功能,那么你可以尝试一下。如果你不喜欢其中任何一个,你可以尝试原型。

如果您不想使用任何Framework,则必须使用XMLHTTPREQUEST对象。 W3C对此有一个documentation

答案 1 :(得分:0)

您也不想使用

 document.writeln(myDataArray[16]);

一旦DOM完成,Document.writeln()将清空整个页面 渲染。您想使用jQuery或mootools等操纵DOM。也 响应对象可能需要从Json解析为对象。

答案 2 :(得分:0)

您可以使用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]);

        }

    } );

};