作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么?
哦,为什么我的 ajax 不能在本地主机上工作,而 url 显然有效?
我使用 WAMP 服务器并为项目文件夹创建了一个别名目录。正如我所说,该 url 有效是因为我可以通过浏览器的地址栏访问它,但由于某种原因 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);
}
}
});
最佳答案
由于我们无权访问或没有足够的信息来复制您的开发服务器,我们能做的最好的事情就是提出一些可能修复它的建议。以下是三个最可能的原因(根据我的经验):
[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 的开发工具中检查“网络”面板来确认您的应用请求的 URL。
解决方案:如果可能,请在当前页面中添加或删除正斜杠。
解决方案:参见http://enable-cors.org .如果这不起作用,您将需要启动服务器以在本地运行,而不是依赖于从文件系统中检索文件。
祝你好运!
关于AJAX:本地主机上的 "The requested URL was not found on this server",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36984532/
我是一名优秀的程序员,十分优秀!