2011-02-07 138 views
1

我正在尝试向站点上配置的Json服务器发出JavaScript请求。我已经处理了网站上的权限,因此我可以使用web服务模块保存注释。问题是我必须使用JavaScript来做到这一点,我试过这个:如何制作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类。请帮忙。

+4

`Request.JSON`是MooTools的功能。你在使用Mootools吗? – lonesomeday 2011-02-07 13:36:35

回答

1

如果你打算更频繁地使用这种功能,我建议使用一个框架。我个人建议jQuery,但是由于您正在尝试使用Mootools功能,因此您可以尝试使用该功能。如果你不喜欢其中任何一个,你可以试试Prototype。

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

+0

我在HTML页面上包含了mootools,并且已经删除了document.writeln()部分。它似乎并没有工作。它应该在我的页面上发布评论,但我认为在我的脚本中仍然存在错误。不管怎么说,还是要谢谢你。 – Sierra313 2011-02-07 14:41:15

0

您也不想使用

document.writeln(myDataArray[16]); 

Document.writeln()将空出整个页面在DOM完成 渲染。你想用jQuery或mootools等来操作DOM。也可能是 响应对象可能需要从Json解析为对象。

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]); 

     } 

    }); 

}; 
相关问题