Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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 通过AJAX从JSON设置值_Javascript_Jquery_Json_Ajax - Fatal编程技术网

Javascript 通过AJAX从JSON设置值

Javascript 通过AJAX从JSON设置值,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,我正在使用Github Gists作为一个辅助项目制作一个网络游乐场。我将两个json文件加载到编辑器中。1处理所有库(jquery、bootstrap等),另一个处理用户设置(fontsize、version等) 所以无论如何,我有这个JSON命名的设置 var settings = gistdata.data.files["settings.json"].content var jsonSets = JSON.parse(settings) 我解析并试图从JSON中获取一个对象,并将其

我正在使用Github Gists作为一个辅助项目制作一个网络游乐场。我将两个json文件加载到编辑器中。1处理所有库(jquery、bootstrap等),另一个处理用户设置(fontsize、version等)

所以无论如何,我有这个JSON命名的设置

var settings   = gistdata.data.files["settings.json"].content
var jsonSets = JSON.parse(settings)
我解析并试图从JSON中获取一个对象,并将其设置为输入文本框的值

现在
console.log(jsonSets.sitetTitle)
工作得非常好

但当我尝试动态更改输入时

$("[data-action=sitetitle]").val(jsonSets.siteTitle).trigger("change")
问题是它没有实际应用该值

我成功应用该值的唯一方法是

setTimeout(function() {
  $("[data-action=sitetitle]").val(jsonSets.siteTitle).trigger("change")
}, 5000)
速度慢得可笑

有人知道为什么不应用该值吗?
此外。
我怎样才能解决这个问题

var hash = window.location.hash.substring(1)
if (window.location.hash) {
  function loadgist(gistid) {
    $.ajax({
      url: "https://api.github.com/gists/" + gistid,
      type: "GET",
      dataType: "jsonp"
    }).success(function(gistdata) {
      var libraries  = gistdata.data.files["libraries.json"].content
      var settings   = gistdata.data.files["settings.json"].content

      var jsonLibs = JSON.parse(libraries)
      var jsonSets = JSON.parse(settings)

      // Return libraries from json
      $.each(jsonLibs, function(name, value) {
        $(".ldd-submenu #" + name).prop("checked", value)
      })

      // Return font settings from json
      var siteTitle      = jsonSets.siteTitle
      var WeaveVersion   = jsonSets.version
      var editorFontSize = jsonSets.editorFontSize
      var WeaveDesc      = jsonSets.description
      var WeaveAuthor    = jsonSets.author

      $("[data-action=sitetitle]").val(siteTitle).trigger("change")
      $("[data-value=version]").val(WeaveVersion).trigger("change")
      $("[data-editor=fontSize]").val(editorFontSize).trigger("change")
      $("[data-action=sitedesc]").val(WeaveDesc).trigger("change")
      $("[data-action=siteauthor]").val(WeaveAuthor).trigger("change")
    }).error(function(e) {
      // ajax error
      console.warn("Error: Could not load weave!", e)
    })
  }

  loadgist(hash)
} else {
  // No hash found
}

我的问题实际上与本地存储有关。
我清除了它
localStorage.clear()在之后运行ajax函数,解决了问题

var hash = window.location.hash.substring(1)
if (window.location.hash) {
  localStorage.clear()
  function loadgist(gistid) {
    $.ajax({
      url: "https://api.github.com/gists/" + gistid,
      type: "GET",
      dataType: "jsonp",
      jsonp: "callback"
    }).success(function(gistdata) {
      var htmlVal    = gistdata.data.files["index.html"].content
      var cssVal     = gistdata.data.files["index.css"].content
      var jsVal      = gistdata.data.files["index.js"].content
      var mdVal      = gistdata.data.files["README.md"].content
      var settings   = gistdata.data.files["settings.json"].content
      var libraries  = gistdata.data.files["libraries.json"].content
      var jsonSets   = JSON.parse(settings)
      var jsonLibs   = JSON.parse(libraries)

      // Return font settings from json
      var siteTitle      = jsonSets.siteTitle
      var WeaveVersion   = jsonSets.version
      var editorFontSize = jsonSets.editorFontSize
      var WeaveDesc      = jsonSets.description
      var WeaveAuthor    = jsonSets.author

      $("[data-action=sitetitle]").val(siteTitle)
      $("[data-value=version]").val(WeaveVersion)
      $("[data-editor=fontSize]").val(editorFontSize)
      $("[data-action=sitedesc]").val(WeaveDesc)
      $("[data-action=siteauthor]").val(WeaveAuthor)
      storeValues()

      // Return settings from the json
      $(".metaboxes input.heading").trigger("keyup")

      // Return libraries from json
      $.each(jsonLibs, function(name, value) {
        $(".ldd-submenu #" + name).prop("checked", value).trigger("keyup")
      })

      // Set checked libraries into preview
      $("#jquery").trigger("keyup")

      // Return the editor's values
      mdEditor.setValue(mdVal)
      htmlEditor.setValue(htmlVal)
      cssEditor.setValue(cssVal)
      jsEditor.setValue(jsVal)

    }).error(function(e) {
      // ajax error
      console.warn("Error: Could not load weave!", e)
    })
  }

  loadgist(hash)
} else {
  // No hash found
}

尝试将
jsonp:'callback'
添加到
dataType:'jsonp'
lol的正后方,我需要做的就是在调用ajax之前的开头添加
localStorage.clear()
。谢谢你的提示。这会派上用场的。