为什么?
哦,为什么当网址清楚地工作时,我的ajax不能在localhost中工作?
我使用WAMP-server,我为项目文件夹创建了一个别名目录。就像我说的那样,网址是可行的,因为我可以通过浏览器的地址栏找到它,但是ajax由于某种原因失败了。
代码:
var temp_url = "localhost/api/1.1/app_dev.php/getsomething/something";
$.ajax(
{
type: "GET",
url: temp_url,
timeout:5000, // 5 second timeout in millis!
data:{ 'get_data' : querystring},
dataType: "jsonp",
cache: false,
success: function( data, textStatus, jqXHR ) {
console.debug(data);
},
error: function(jqXHR, exception)
{
if (jqXHR.status === 0) {
alert('Not connect.\n Verify Network.');
} else if (jqXHR.status == 404) {
alert('Requested page not found. [404]');
} else if (jqXHR.status == 500) {
alert('Internal Server Error [500].');
} else if (exception === 'parsererror') {
alert('Requested JSON parse failed.');
} else if (exception === 'timeout') {
alert('Time out error.');
} else if (exception === 'abort') {
alert('Ajax request aborted.');
} else {
alert('Uncaught Error.\n' + jqXHR.responseText);
}
}
});
答案 0 :(得分:4)
由于我们无法访问或提供足够的信息来复制您的开发服务器,因此我们所能做的最好的事情就是建议一些可能解决问题的方法。以下是三个最可能的原因(根据我的经验):
[localhost]/site/page.html
,那么您可以在本地浏览器解释AJAX请求,因为您使用了相对路径,这是可能的。因此,您的实际请求可能会发送到:[localhost]/site/localhost/api/1.1/app_dev.php/getsomething/something
...这也可以解释为什么您可以复制&粘贴alert()
中的URL,因为将其复制并粘贴到URL栏会自动使其成为绝对路径。 解决方案:尝试使用绝对路径,如下所示:
var temp_url = "/api/1.1/app_dev.php/getsomething/something"
您可以通过查看“网络”来确认您的应用所请求的网址。适用于Chrome,Safari或Firefox的Dev Tools中的面板。
解决方案:如果可能,请添加或删除当前页面的正斜杠。
解决方案:请参阅http://enable-cors.org。如果这不起作用,您需要启动服务器以在本地运行,而不是依赖于从文件系统中检索文件。
祝你好运!答案 1 :(得分:0)