我的ajax方法不起作用,

Posted

技术标签:

【中文标题】我的ajax方法不起作用,【英文标题】:My ajax method is not working, 【发布时间】:2017-02-14 23:56:06 【问题描述】:

在控制台日志中收到以下消息 原因:缺少 CORS 标头“Access-Control-Allow-Origin” 所以我检查了一些堆栈溢出解决方案,但无法解决一些可以帮助我解决它。

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script>
    $(document).ready(function () 
    
    var save_temp = 
                 "token": "e2c420d928d4bf8ce0ff2ec19b371514"
                  ;
             var comment_data = JSON.stringify(save_temp);

    //alert(comment_data);
    var request = $.ajax(
       url: "http://vyhub.com/irmtapi/dailyreport/checkReport",
       type: "POST",
       data:comment_data,
       contentType: "application/json; charset=utf-8",
       dataType: 'json',
    );

    request.done(function(msg)
    
      // $("#log").html( msg );
    alert(msg)
    );

    request.fail(function(jqXHR, textStatus) 
       alert( "Request failed: " + textStatus );
    );

    );

    </script> 

【问题讨论】:

你不能从客户端做任何事情。这是服务器端的问题。请阅读来自Enable CORS 的内容。 没有在客户端我也得到同样的错误 我用的是192.168.1.9/irmtapi/同样的问题 我刚刚给了你一个链接来启用 CORS。你甚至检查过吗?你用的是什么服务器? 好的,现在检查 【参考方案1】:

这显然是服务器端代码的问题,它没有发送正确的标头以允许跨域请求共享。你需要通过两种方式在 Apache Server 中使用 php 来enable CORS。

方法一:使用 Apache Server 的设置。

使用 Apache 的 .htaccess,您可以通过添加以下行来启用 CORS:

Header set Access-Control-Allow-Origin "*"

为此,您需要确保启用了mod_headers 模块。您可以使用sudo a2enmod headers 启用此功能。为此,您需要 sudo 权限。另外,您需要在使用sudo service apache2 reload更改配置后重新启动Apache Server。

方法二:使用PHP代码。

或者,如果您对服务器管理没有太多控制权,您可以在响应您请求的脚本中启用它。只需在 PHP 文件的顶部添加这个,这样浏览器就可以进行 AJAX 访问:

<?php
  header("Access-Control-Allow-Origin: *");

如果您还有其他问题,请告诉我。如需更多信息,请参阅以下参考资料:

Enable CORS in Apache Server Enable CORS in PHP Script

【讨论】:

以上是关于我的ajax方法不起作用,的主要内容,如果未能解决你的问题,请参考以下文章

为啥我对控制器方法的简单 ajax 调用不起作用?

表单验证在使用 ajax 方法提交之前不起作用

Spring Rest API 的 AJAX POST 方法不起作用

使用ajax更改div文本不起作用

Ajax 在 JQuery 表单插件中不起作用

连接移动数据时 Ajax 不起作用