0

这是来自 json_encode() 文件的 json 字符串:

[{"ID":"650","DESCR":"FRONTAGE","MAINURL":"images\/98\/30-HEATH (1).JPG","THUMBURL":"images\/98\/30-HEATH (1).JPG","ALBUM":"98"},{"ID":"651","DESCR":"PICTURE","MAINURL":"images\/98\/30-HEATH (2).JPG","THUMBURL":"images\/98\/30-HEATH (2).JPG","ALBUM":"98"},{"ID":"652","DESCR":"PICTURE","MAINURL":"images\/98\/30-HEATH (3).JPG","THUMBURL":"images\/98\/30-HEATH (3).JPG","ALBUM":"98"}]

这是我正在使用的电话。它确实给出了一个对象,但是每次我尝试访问它时,我都会从 chrome javascript 控制台收到一个类型错误。

function FindPictures(b) {

var picturesHome = {};
var album = "";
var baseURL = b;

this.pics = function(alb){
    album = "";


    $.ajax({
        async: false,
        url: "picsJSON.php",
        dataType: 'json',
        success: function (json) {
            picturesHome = json;
        },
        error: function (error) {}
    });

    return picturesHome;    
};

};
4

2 回答 2

0

success是一个回调:在 ajax 下载完成之前它不会被执行,但是你的函数会picturesHome立即返回。标准程序是在success回调中做一些有意义的工作:

function doSomethingWithThePictures(pics)
{
    alert('got some pics!');
    console.log(pics);
}

... snip ...

$.ajax({
        async: false,
        url: "picsJSON.php",
        dataType: 'json',
        success: function (json) {
            doSomethingWithThePictures(json);
        },
        error: function (error) { alert('ERROR: ' + error); }
    });
于 2012-11-06T02:47:33.547 回答
0

我猜,问题出在 ajax 调用中指定的数据类型

这可以通过在 php 中指定 JSON 内容类型来解决,例如

header('Content-Type: application/json');

datatype从 ajax 中删除选项并将其解析为 JSON

$.ajax({
    async: false,
    url: "picsJSON.php",
    success: function (json) {
        picturesHome = JSON.parse(json); // you can use $.parseJSON() instead
    },
    error: function (error) {}
});

希望这可以帮助

于 2012-11-06T06:30:58.973 回答