AJAX:在localhost

时间:2016-05-02 14:10:11

标签: ajax

  1. Ajax可以很好地联系远程服务器(使用jsonp)并返回漂亮的数据。
  2. 在localhost中,它表示在此服务器上找不到该网址。
  3. 我在ajax之前“提醒”了网址,将其复制粘贴到浏览器地址栏中,然后返回漂亮的数据。
  4. 为什么?

    哦,为什么当网址清楚地工作时,我的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);
            }
        }
    });
    

2 个答案:

答案 0 :(得分:4)

由于我们无法访问或提供足够的信息来复制您的开发服务器,因此我们所能做的最好的事情就是建议一些可能解决问题的方法。以下是三个最可能的原因(根据我的经验):

  1. 您正在使用相对路径而不是绝对路径。 如果您的网站位于[localhost]/site/page.html,那么您可以在本地浏览器解释AJAX请求,因为您使用了相对路径,这是可能的。因此,您的实际请求可能会发送到:[localhost]/site/localhost/api/1.1/app_dev.php/getsomething/something ...这也可以解释为什么您可以复制&粘贴alert()中的URL,因为将其复制并粘贴到URL栏会自动使其成为绝对路径。
  2. 解决方案:尝试使用绝对路径,如下所示:

    var temp_url = "/api/1.1/app_dev.php/getsomething/something"
    

    您可以通过查看“网络”来确认您的应用所请求的网址。适用于Chrome,Safari或Firefox的Dev Tools中的面板。

    1. 您当前的网址以/.请参阅the second answer here; AJAX对于您当前使用正斜杠的URL是否结束非常挑剔。
    2. 解决方案:如果可能,请添加或删除当前页面的正斜杠。

      1. Localhost可能会因CORS原因拒绝您的请求。目前这可能不是您的问题,因为您报告了404错误,但请注意,我经常会这样做由于某些神秘的跨域原始策略,我们遇到了localhost不允许AJAX请求,所以如果你很快遇到它,这是一件好事。
      2. 解决方案:请参阅http://enable-cors.org。如果这不起作用,您需要启动服务器以在本地运行,而不是依赖于从文件系统中检索文件。

        祝你好运!

答案 1 :(得分:0)

确保您创建的文件具有有效的文件类型,例如 PHP 文件,或者只是复制粘贴现有的有效工作 php 文件并在其中写入 ajax 代码。它现在会起作用。下图中的 myAjax 文件是无效文件,ma​​terial 是有效的 PHP 文件enter image description here