为什么我的jquery.ajax()没有激发成功或错误?

时间:2011-09-08 21:43:58

标签: jquery ajax

我一直盯着这看了6个小时。我不明白。

$.ajax({
    url: "http://www.band.dev:8888/datafeeder/hello_world",
    success: function( data ) {
        alert (data);
    },
    error: function(request, status, error) {
        alert(status + ' - ' + error);
    }
});

我在本地运行MAMP,当我直接点击URL时,回声'hello world',没问题。当我运行它时,我得到一个带有'错误 - '的对话框。我试过在那里添加dataType:'html',没有帮助。想法?

- 编辑 -

所以这是我的实际问题。当我运行它时,既没有成功也没有错误被触发,我可以看到当我直接点击URL时JSON是正确的。 (顺便说一句,相对网址修复适用于上面的代码。)

$( "#member_type" ).autocomplete({
        source: function( request, response ) {
            $.ajax({
                url: "/datafeeder/get_member_types/json",
                dataType: "jsonp",
                data: {
                    //maxNum: 12,
                    searchString: request.term
                },
                search: function(event, ui) {
                    alert('searching');
                },
                success: function( data ) {
                    alert (data);
                    response( $.map( data, function( item ) {
                        return {
                            label: item.type,
                            value: item.id
                        }
                    }));
                },
                error: function( request, status, error) {
                    alert (status + ' - ' + error);
                }
            });
        }
});

1 个答案:

答案 0 :(得分:2)

您可能正在达到same origin policy限制,禁止您将AJAX请求发送到托管脚本的域之外的其他域。确保您不违反此政策的最佳方法是使用相对网址进行AJAX调用:

$.ajax({
    url: "/datafeeder/hello_world",
    success: function( data ) {
        alert (data);
    },
    error: function(request, status, error) {
        alert(status + ' - ' + error);
    }
});

要使此AJAX请求生效,托管此JavaScript的HTML页面必须托管在http://www.band.dev:8888上。

相关问题