2011-02-07 95 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]); 

     } 

    }); 

};