jquery ajax无法获得响应

时间:2012-09-11 14:37:34

标签: jquery ajax asynchronous

此代码存在问题

var MAIN_LOCATION = "http://www.bosscaffe.com/new/";
$("#gallery_page").click(function() {
    $('#gallery_photos').show();
    getPhotos();
    return false;
}); 

function getPhotos()
{
    $.ajax({
         type: "GET",
         url: MAIN_LOCATION + "classes/getEnterijerPhotos.php?lang="+LANG,
         success: function(msg){
            if (msg != 'nothing')
            {
                $('#photo_wrapper').empty();
                $('#photo_wrapper').append(msg);
            }
         }
    });
}

我尝试过像crossdomain这样的东西:true,async:false等等...我试图将它切换到POST,但是由于某种原因,如果我在新标签中触发调用,这个没有返回任何内容,我得到结果{ {3}}所以所有这些图片都准备好了,在我的本地实例上它可以正常工作但在服务器上根本没有,在Chrome中我得到状态=已取消,对此有任何想法吗?

在任何情况下,最终解决方案都是将其转移到JSON,但奇怪的是这样的功能在同一个域上不起作用。

2 个答案:

答案 0 :(得分:1)

您正在拨打cross origin电话吗? =>是您的调用页面的来源与MAIN_LOCATION相同(相同的协议,相同的域,相同的端口)。

因此,如果您是MAIN_LOCATION = 'http://www.bosscaffe.com/new/classes/getEnterijerPhotos.php?lang=en',则调用页面需要以http://www.bosscaffe.com/...

开头

如果它是一个跨越来源的电话并且您想要修复它(不将其移动到同一个来源)我在该问题上发布了答案here

答案 1 :(得分:0)

您没有提供足够的信息来回答您的问题,但有以下几点需要考虑:

你的第一行有一个拼写错误,你在胆汁中有一个额外的'l'(el)。

如前所述,如果您希望回复是特定的数据类型,则需要在$ .ajax()的参数中列出它,以便代码可以正确地准备其结果。

在所有AJAX请求上提供错误处理程序通常是个好主意,因此您知道请求实际上已成功。在您的代码中,您的请求可能会失败(“默默地”),而不会向您提供任何事实的指示。

修改

如果您是从运行PHP服务器进程的同一主机发出请求,我怀疑您需要在URL中使用服务器的完全限定主机名而不是“localhost”。