代码之家  ›  专栏  ›  技术社区  ›  b. e. hollenbeck

json响应为空,但url正确响应

  •  1
  • b. e. hollenbeck  · 技术社区  · 16 年前

    我有一个表单是jquery在一个有多个表单的页面上用ajax编写的。我正在执行以下函数,它是 $.ajax 功能:

    function do_json_get(uri){
        var ret = '';
        var url = AJAX_URL + uri;
    
        $.ajax({
            type: 'GET',
            url: url,
            async: false,
            success: function(data) {
                ret = data.html;
            },
            dataType: 'json'
        });
    
        return ret;
    }
    

    当我直接转到ajax服务器(它用php呈现表单)时,我得到了原始的json响应——所以我知道服务器正在向浏览器输出,ajax服务器正在做其他事情,比如设置适当的cookie,所以我知道连接良好(我得到了200个响应代码)。然而 data 对象将返回空值。

    2 回复  |  直到 13 年前
        1
  •  3
  •   user113716    16 年前

    这是一个猜测。如果您是从文件系统提供页面,firefox(我认为chrome)会将其视为来自不同的域。你会得到200个回复,但没有数据。

    试试野生动物园,或者 jsonp 一枪代替 json .

    编辑:

    因为你是从另一个域获取数据,所以它不起作用。我认为xmlhttprequest不允许这样做。

        2
  •  -1
  •   Peter Bailey    16 年前

    哦,孩子。又是这个问题。

    阿贾克斯 : 异步的 javascript和xml*。异步。异步。异步。

    你的职责, do_json_get() 收益率 ret 之前 成功 执行ajax调用中的handler函数。操作顺序没有从上到下进行。换句话说, 你不能那样做。

    由于它的异步特性,ajax操作回调,而不是返回值。你需要改变你的模式。这个 成功 handler函数需要对 data.html 或者传递给另一个函数。

    * 是的,我知道现在原始缩略词的xml部分基本上已经过时了。

    推荐文章