如何从本地url将JSON设置为变量
How can I set JSON into a variable from a local url
显然jQuery让我变笨了。
我有一个本地url,提供原始JSON,我不知道如何从我的方法中使用JSON而不使用jQuery。
这是我如何知道用jQuery做的
var myJson;
$.getJSON('/local/path/to/json', function (data) {
myJson = data;
});
// Now I can use myJson in a method.
要从服务器检索JSON字符串,请使用本参考中描述的XMLHttpRequest
对象:
你会发现它涉及到所有你需要考虑和检查的看不见的事情。因此像jQuery这样的库。
将JSON字符串转换为javascript对象,使用JSON.parse()
。这里是参考:
下面是一个例子:
function readJSON(file) {
var request = new XMLHttpRequest();
request.open('GET', file, false);
request.send(null);
if (request.status == 200)
return request.responseText;
};
var myObject = JSON.parse(readJSON('/local/path/to/json'));
编辑#2:谢谢你在这个例子中的编辑,Chase。警告你一句。在第三部分使用false
使open()
方法成为同步调用并不是一个好主意。AJAX是专门为异步使用而设计的,而进行同步调用会引起锁定。作为一个曾经认为有同步调用的地方的人,我现在发现总是有更好的方法来完成异步调用。给你一句忠告
请看看下面的代码将在所有浏览器上,谢谢
function getJSONData(jsonurl) {
var req = null;
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) { }
}
}
req.open('GET', jsonurl, false);
req.send(null);
return req.status == 200 ? req.responseText : 'Error occurred';
}
var jsonData = JSON.parse(getJSONData('/local/path/to/json'));
alert(getJSONData('/local/path/to/json'));
希望这将是非常有用的,谢谢你的时间
如果你熟悉jQuery,这是$.ajax
的一个直接替代品:
脚本:
function ajax( uri, settings ) {
var ajax = new window.XMLHttpRequest(),
data = settings.type == 'GET' ? '' : settings.data,
async = settings.async ? settings.async : false;
uri = settings.type == 'GET' ? uri + ( settings.data ? '?' + settings.data : '' ) : uri;
ajax.onreadystatechange = function () {
if ( ajax.readyState == 4 ) { //response ready
if ( ajax.status == 200 ) { //success
if ( settings.success ) settings.success( ajax.responseText, ajax.statusText );
if ( settings.complete ) settings.complete( ajax, ajax.statusText );
} else {
if ( settings.error ) settings.error( ajax, ajax.status, ajax.statusText );
};
};
};
ajax.open( settings.type, uri, async );
if ( settings.headers ) {
for ( var header in settings.headers ) {
ajax.setRequestHeader( header, settings.headers[header] );
};
};
ajax.send( data );
};
就像jQuery一样调用它:
ajax( '/local/path/to/json', {
"type": "GET", //or "POST"
//"data": "<query string>", //if POST
"success": function ( data, status ) {
var myJson = window.JSON.parse( data );
},
"error": function ( response, status, error ) {
// handle error
}
} );
相关文章:
- 需要帮助设置json数组
- 如何将JSON结果设置为'src'共'img'以在ASP.NET MVC4中显示图像
- 在node.js中使用JavaScript从JSON对象获取和设置文本内容
- 在JSON数组中进行迭代,并为其元素设置样式
- 搜索包含值的json对象键,然后取消设置
- 如何在Calendario中从JSON设置数据
- 在设置用户后,从 JavaScript JSON 请求中获取 Web 服务 (asmx) ASP.NET Windows
- Javascript requestData未定义,尽管为JSON设置了var
- 节点.js无法使用 res.json 设置标头错误
- 如何使用json设置带有php代码结果的js变量
- Handlebars.js基于值/对的JSON设置类
- 在javascript中从json设置许多google标记
- 在焦点上的Angular材质自动完成下拉结果中显示完整的json设置
- 如何从本地url将JSON设置为变量
- 使用json设置tag's value属性不工作
- D3.Json设置缓存为false
- 如何使用JSON设置值.如果我正在分析的值可能为空,则执行parse
- 使用json设置css属性
- webbrtc使用JSON设置描述
- 从 AJAX/JSON 设置 PHP 变量