2016-03-29 13 views
0

私はサイドプロジェクトとして作っているWeb遊び場にGithub Gistsを使用しています。 2つのjsonファイルをエディタにロードします。 1は、私は、このJSONという名前の設定はJSONからAJAX経由で値を設定

var settings = gistdata.data.files["settings.json"].content 
var jsonSets = JSON.parse(settings) 

私はパースと試みてきたので、とにかくユーザーの設定(フォントサイズ、バージョン、など:)

ためのすべてのライブラリ(jQueryの、ブートストラップなど:)と他を扱いますJSONからオブジェクトを取得し、それを入力テキストボックスの値として設定します。

console.log(jsonSets.siteTitle)完全に罰金作品

が、私は動的に入力を変更しようとすると...

$("[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 
} 
+1

'JSONPを追加しようとしました: '右のdataType'背後callback'':' jsonp'' –

+0

私が行うために必要な笑すべては私のAJAX呼び出しの前に初めに 'localStorage.clear()'でした。しかし、チップをありがとう。これは便利です。 –

答えて

0

私の問題は実際にはlocalStorageに関連していました。
私はそれをクリアしました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 
} 
関連する問題