English 中文(简体)
jjquery ajax, 得到JSON给无效。
原标题:jquery ajax, getJSON gives null

我要用它获得一个 php 文件的值 :

var phrases = null;
function setPhrases(lang) {
    $.getJSON(locationHostname()+ json?json=lang&lang= +lang,
            function(json) {
        phrases = json;
        alert( 1 +     + phrases);//phrases = [object Object]
    });
    alert( 2 +     + phrases);//phrases = null
}
setPhrases( en );
alert(3+   +phrases);//phrases = null

如何正确设置它, 该提醒( 3++ + sphones); 获得一个对象而非空? 我想使用函数, 例如从 GetJSOn 返回值 。

谢谢

最佳回答

$.getJSON 是非同步的, 这就是为什么您没有定义: 在ajax 呼叫仍在运行时执行 < code> 警报 。

您可以在成功事件上调用函数, 通过 json 作为参数, 例如 。

function setPhrases(lang) {
    $.getJSON(locationHostname()+ json?json=lang&lang= +lang,
        function(json) {
            continueProcessing(json)
        }
    );
}

function continueProcessing(obj) {
  ...
}
问题回答

.get JSON 运行不同步,除非闪电快,否则在完成前将运行 alert(2) alert(3) 。 您需要将 alert(2) 作为成功功能的一部分, 或者使用 deferred

我想既然是电子的, 闪电可能很快,甚至还不够!

我认为,由于$.getJSON() )的非同步行为,您无法在第三个备战状态() 中找到 单词 , alert () <() .getJSON ()

你应该使用回击方法。 与你得到JSON的方法有问题, 因为它是同步的。

例如:

function setPhrases(lang, callback) {
    $.getJSON(locationHostname()+ json?json=lang&lang= +lang,
            function(json) {

        callback(json);
    });
}

   setPhrases( en ,function(result) {

    alert(result);

});




相关问题
CSS working only in Firefox

I am trying to create a search text-field like on the Apple website. The HTML looks like this: <div class="frm-search"> <div> <input class="btn" type="image" src="http://www....

image changed but appears the same in browser

I m writing a php script to crop an image. The script overwrites the old image with the new one, but when I reload the page (which is supposed to pickup the new image) I still see the old one. ...

Firefox background image horizontal centering oddity

I am building some basic HTML code for a CMS. One of the page-related options in the CMS is "background image" and "stretch page width / height to background image width / height." so that with large ...

Separator line in ASP.NET

I d like to add a simple separator line in an aspx web form. Does anyone know how? It sounds easy enough, but still I can t manage to find how to do it.. 10x!