Pau*_*ull 29 javascript parsing json synchronous getjson
我想从我自己的包含数组的服务器加载一个JSON文件到一个javascript对象变量.
我希望在页面加载开始时以同步方式执行此操作,因为在页面加载期间需要数据.
我设法使用jQuery.getJSON,但这是asynch ajax,它似乎有点矫枉过正.
有没有办法以同步的方式加载JSON而不进行自己的解析?
(或多或少喜欢使用<script language="JavaScript" src="MyArray.json"></script>
)
在此先感谢任何帮助,希望它是有道理的,因为我是一个JavaScript新手.保罗
Ale*_*yne 35
getJSON()
只是简单ajax()
的dataType:'json'
设置功能的简写.该ajax()
功能可让您自定义很多有关请求的内容.
$.ajax({
url: 'MyArray.json',
async: false,
dataType: 'json',
success: function (response) {
// do stuff with response.
}
});
Run Code Online (Sandbox Code Playgroud)
您仍然使用回调,async:false
但它会在从ajax调用继续执行之前触发.
Bor*_*nov 14
干得好:
// Load JSON text from server hosted file and return JSON parsed object
function loadJSON(filePath) {
// Load json file;
var json = loadTextFileAjaxSync(filePath, "application/json");
// Parse json
return JSON.parse(json);
}
// Load text with Ajax synchronously: takes path to file and optional MIME type
function loadTextFileAjaxSync(filePath, mimeType)
{
var xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET",filePath,false);
if (mimeType != null) {
if (xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType(mimeType);
}
}
xmlhttp.send();
if (xmlhttp.status==200)
{
return xmlhttp.responseText;
}
else {
// TODO Throw exception
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
注意:此代码仅适用于现代浏览器 - IE8,FF,Chrome,Opera,Safari.对于obosolete IE版本,您必须使用ActiveX,如果您需要,请告诉我,我会告诉您如何;)
如果您使用某种类型的服务器脚本,您可以将数据打印到页面上的脚本标记:
<script type="text/javascript">
var settings = <?php echo $json; ?>;
</script>
Run Code Online (Sandbox Code Playgroud)
这将允许您同步使用数据,而不是尝试异步使用 AJAX。
否则,您必须等待 AJAX 回调才能继续您正在执行的操作。
归档时间: |
|
查看次数: |
50389 次 |
最近记录: |