Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以上代码将在XHR请求中使用。如果您在将此问题与jQuery AJAX请求集成时需要帮助,请告诉我。_Javascript_Jquery_Json_Internet Explorer_Jquery Data - Fatal编程技术网

Javascript 以上代码将在XHR请求中使用。如果您在将此问题与jQuery AJAX请求集成时需要帮助,请告诉我。

Javascript 以上代码将在XHR请求中使用。如果您在将此问题与jQuery AJAX请求集成时需要帮助,请告诉我。,javascript,jquery,json,internet-explorer,jquery-data,Javascript,Jquery,Json,Internet Explorer,Jquery Data,处理此问题将带您到任何地方。这是一项困难的任务,使用任何http服务器都可以轻松解决 如果您的问题是很难设置,请尝试以下方法: 在shell中,您进入文件所在的目录,然后键入 http-server ./ -p 12345 其中,12345可以由您选择的任何有效且尚未使用的端口进行更改。jQuery.getJSON使用ajax .ajax使用XMLHttpRequest chrome和其他浏览器的web安全性会阻止XMLHttpRequest请求本地文件,因为这是一个安全问题 通过深度安全

处理此问题将带您到任何地方。这是一项困难的任务,使用任何http服务器都可以轻松解决

如果您的问题是很难设置,请尝试以下方法:

在shell中,您进入文件所在的目录,然后键入

http-server ./ -p 12345 

其中,
12345
可以由您选择的任何有效且尚未使用的端口进行更改。

jQuery.getJSON使用ajax

.ajax使用XMLHttpRequest

chrome和其他浏览器的web安全性会阻止XMLHttpRequest请求本地文件,因为这是一个安全问题

通过深度安全:本地网页

您收到一封来自攻击者的电子邮件,其中包含以下网页: 您下载的附件

您可以在浏览器中打开现在的本地网页

本地网页创建一个iframe,其源是 .

由于您已登录到Gmail,因此框架会将消息加载到中 你的收件箱

本地网页使用JavaScript读取框架的内容 无法访问框架[0]。document.documentElement.innerHTML。(互联网 网页将无法执行此步骤,因为它将出现 来自非Gmail来源;相同来源策略将导致读取 (失败)

本地网页会将收件箱的内容放入 并通过表单POST将数据提交到攻击者的web服务器。现在 攻击者拥有你的收件箱,这可能对垃圾邮件或垃圾邮件有用 识别盗窃行为

不需要同源策略安全性的数据解决方案是填充json。因为jsonp不是数据的安全格式。Jsonp没有相同的源策略

/* secured json */
{
  "one": "Singular sensation",
  "two": "Beady little eyes",
  "three": "Little birds pitch by my doorstep"
}

/* padded json aka jsonp */
Mycallback ({
  "one": "Singular sensation",
  "two": "Beady little eyes",
  "three": "Little birds pitch by my doorstep"
});
由于jsonp将json包装在一个有效的javascript函数中,因此可以像任何人向页面添加任何javascript一样打开json

var element = document.createElement("script");
element.src = "jsonp.js";
document.body.appendChild(element);
你的回调处理数据

function Mycallback(jsondata) {
}
这在功能上与ajax请求相同,但不同,因为它是一个jsonp请求,实际上更简单

jquerylibs也直接支持jsonp,请参见使用Flickr的jsonpapi的示例;除非意识到双重标准,否则他们甚至可能不会注意到正在使用jsonp

(function() { /* jsonp request note callback in url, otherwise same json*/
  var flickerAPI = "http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?"; 
  $.getJSON( flickerAPI, {
    tags: "mount rainier",
    tagmode: "any",
    format: "json"
  })
    .done(function( data ) {
      $.each( data.items, function( i, item ) {
        $( "<img>" ).attr( "src", item.media.m ).appendTo( "#images" );
        if ( i === 3 ) {
          return false;
        }
      });
    });
})();
(function(){/*jsonp请求注释在url中回调,否则为相同的json*/
var flickerAPI=”http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?"; 
$.getJSON(flickeAPI{
标签:“雷尼尔山”,
tagmode:“任何”,
格式:“json”
})
.完成(功能(数据){
$.each(data.items,function(i,item){
$( "
可以启用对json的本地访问,但这取决于浏览器的不同

使用--允许从文件访问文件以在chrome中启用它


仅供参考:他们正在研究encripted json,我相当肯定,不会有任何方法在本地使用它,目的是使其真正、真正安全。

@SuperHornet在IE中?没有。您在调试模式下看到任何数据吗?没有…@SuperHornetAlso转到Internet选项>高级选项卡,检查“启用活动内容以在我的计算机上的文件中运行”。你能用结果答复吗?nyro.net/data.json不存在…执行此操作后,我得到
createActiveXHR()是未定义的
no。不过,我知道它在做什么。如果您使用CDN源文件,则显示如何正确提供FilePath的更新代码将无法脱机工作。这是一个很好的答案示例。但是,您忘记了一件事,jQuery动态创建函数名时,jsonp永远无法缓存,因为内容会发生更改,因此内容会不断更改这将阻止离线使用,我怀疑采访人员是否想更改浏览器启动参数来运行他的代码,如果人们不得不更改浏览器启动选项来使用它,这将打破Web应用程序的地位。。。
var activex; // save activex somewhere so that it only need to check once
if ( activex === undefined ) 
  try { 
    new ActiveXObject("MSXML2.XMLHTTP.3.0");
    activex = true; 
  } catch (e) { 
    activex = false 
  }
xhr = activex ? createActiveXHR() : createStandardXHR(); 
<html manifest="example.appcache">
AddType text/cache-manifest .appcache
CACHE MANIFEST
data.json
index.php
someimage.png
# continue for all the file needed for the web site to work
loadTasks([
    {name:"Task 1", date:"Date 1", assigned:"John Doe"},
    {name:"Task 2", date:"Date 2", assigned:"Jane Doe"}
]);
<script>
function loadTasks(tasks) {
    $.each(tasks, function (i, task) {
        $("#load_tasks").append(
            "<div class='row'><span class='data-task'>" + task.name +
            "</span> <span class='data-date'>" + task.date +
            "</span> <span class='data-name'>" + task.assigned +
            "</span> </div>");
    });  
}
</script>
<script src="data.jsonp"></script>
{"data":{"abc":[123]}}
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="jquery-1.11.1.min.js"></script>
<script type="text/javascript">
$(function() {
  $.getJSON(document.location.protocol + "data.json")
  .then(function(data, textStatus, jqxhr) {
    var response = JSON.parse(data);
    console.log(textStatus, response);
  } 
   // `error` callback
  , function(jqxhr, textStatus, errorThrown) {
      var response = JSON.parse(jqxhr.responseText);
      console.log(textStatus, errorThrown, response);
      $("body").append(response.data.abc);
  });
})
</script>
</head>
<body>
</body>
</html>
function showData(){
function getLocalPath(fileName/*file name assuming in same directory*/){
    // Remove any location or query part of the URL
    var directoryPath = window.location.href.split("#")[0].split("?")[0];
    var localPath;
    if (directoryPath.charAt(9) == ":") {
        localPath = unescape(directoryPath.substr(8)).replace(new RegExp("/","g"),"\\");
    }
    localPath = localPath.substring(0, localPath.lastIndexOf("\\")+1)+fileName;
    console.log(localPath);
    return localPath;
}

var content = null;
    try {
        var fileSystemObj = new ActiveXObject("Scripting.FileSystemObject");
        var file = fileSystemObj.OpenTextFile(getLocalPath("data.json"),1);
        content = file.ReadAll();
        file.Close();
    } catch(ex) {
        console.log(ex);
    }
    console.log(content);
}
showData();
http-server ./ -p 12345 
/* secured json */
{
  "one": "Singular sensation",
  "two": "Beady little eyes",
  "three": "Little birds pitch by my doorstep"
}

/* padded json aka jsonp */
Mycallback ({
  "one": "Singular sensation",
  "two": "Beady little eyes",
  "three": "Little birds pitch by my doorstep"
});
var element = document.createElement("script");
element.src = "jsonp.js";
document.body.appendChild(element);
function Mycallback(jsondata) {
}
(function() { /* jsonp request note callback in url, otherwise same json*/
  var flickerAPI = "http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?"; 
  $.getJSON( flickerAPI, {
    tags: "mount rainier",
    tagmode: "any",
    format: "json"
  })
    .done(function( data ) {
      $.each( data.items, function( i, item ) {
        $( "<img>" ).attr( "src", item.media.m ).appendTo( "#images" );
        if ( i === 3 ) {
          return false;
        }
      });
    });
})();