我正在尝试向站点上配置的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类。请帮忙。
答案 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]);
}
} );
};