How to include JSON data in javascript synchronously without parsing? How to include JSON data in javascript synchronously without parsing? javascript javascript

How to include JSON data in javascript synchronously without parsing?


getJSON() is simply shorthand for the ajax() function with the dataType:'json' set. The ajax() function will let you customize a lot about the request.

$.ajax({  url: 'MyArray.json',  async: false,  dataType: 'json',  success: function (response) {    // do stuff with response.  }});

You still use a callback with async:false but it fires before it execution continues on from the ajax call.


Here you go:

// Load JSON text from server hosted file and return JSON parsed objectfunction 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 typefunction 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 && xmlhttp.readyState == 4 )  {    return xmlhttp.responseText;  }  else {    // TODO Throw exception    return null;  }}

NOTE: This code works in modern browsers only - IE8, FF, Chrome, Opera, Safari. For obosolete IE versions you must use ActiveX, let me know if you want that I will tell you how ;)


if you're using a server script of some sort, you could print the data to a script tag on the page:

<script type="text/javascript">var settings = <?php echo $json; ?>;</script>

This will allow you to use your data synchronously rather than trying to use AJAX asynchronously.

Otherwise you'll have to wait for the AJAX callback before continuing on with whatever it is you're doing.