Javascript Ajax请求在远程服务器中工作,但在本地服务器中不工作(使用Codeigniter)
我有一个web应用程序,它使用Codeigniter php代码向服务器发出Ajax请求。Ajax请求在本地服务器中正常工作,但当应用程序托管在远程服务器中时则无法正常工作。 控制台错误包括:Javascript Ajax请求在远程服务器中工作,但在本地服务器中不工作(使用Codeigniter),javascript,php,jquery,ajax,codeigniter,Javascript,Php,Jquery,Ajax,Codeigniter,我有一个web应用程序,它使用Codeigniter php代码向服务器发出Ajax请求。Ajax请求在本地服务器中正常工作,但当应用程序托管在远程服务器中时则无法正常工作。 控制台错误包括: XMLHttpRequest cannot load http://localhost/CI-example/index.php/control/controlHome. Origin http://www.page.com is not allowed by Access-Control-Allow-O
XMLHttpRequest cannot load http://localhost/CI-example/index.php/control/controlHome. Origin http://www.page.com is not allowed by Access-Control-Allow-Origin.
令人惊讶的是,请求是在服务器中发出的,而不是响应
我用于Ajax请求的URL是:
AJAX_URL = "http://localhost/CI-example/site/index.php/control/controlHome";
但是,我也尝试过:
AJAX_URL = "http://www.page.com/CI-example/site/index.php/control/controlHome";
然后捕获下一个错误:
POST http://www.page.com/webdom/site/index.php/control/controlHome 500 (Internal Server Error)
我该怎么办
编辑:
www.page.com是一个子域。当使用子域来处理Ajax请求时,是否需要进行一些配置
文件夹组织是:
/CI-example
---/application/controllers/control.php
---/system
---/site/js/ajaxRequest.js
您不能使用AJAX向不同的域发出HTTP POST请求,除非该页面允许您使用一个名为“Access Control Allow Origin”的特殊头进行此操作
localhost与page.com不同,这就是为什么它不起作用的原因。您不能使用AJAX向其他域发出HTTP POST请求,除非该页面允许您使用名为“Access Control Allow Origin”的特殊标头执行此操作 localhost与page.com不同,这就是它无法工作的原因。对的url的响应表示页面执行过程中出现了问题。PHP错误日志应该可以帮助您找到错误所在 添加行
ini\u集('display\u errors',1)
可能会将错误返回到错误处理程序中的ajax请求。不要忘记在使用后删除该行,您不希望它出现在生产代码中。的url上的响应表示页面执行过程中出现了问题。PHP错误日志应该可以帮助您找到错误所在
添加行
ini\u集('display\u errors',1)
可能会将错误返回到错误处理程序中的ajax请求。不要忘记在使用后删除该行,您不希望它出现在生产代码中。第二个错误是:500(内部服务器错误)
这意味着服务器端出现错误-不是跨源策略问题。这可能是PHP脚本执行过程中的错误
检查您的错误日志(例如:如果您使用标准灯组,错误日志应该在
/var/log/apache2/
中的某个位置)第二个错误是:500(内部服务器错误)
这意味着服务器端出现错误-不是跨源策略问题。这可能是PHP脚本执行过程中的错误 检查您的错误日志(例如:如果您使用标准灯组,错误日志应该在
/var/log/apache2/
中的某个位置)试试这个
http://localhost/CI-example/index.php/control/controlHome
而不是
http://localhost/CI-example/site/index.php/control/controlHome
在您的ajax URL中。
从文件夹结构来看,不需要在URL中包含“站点”试试这个
http://localhost/CI-example/index.php/control/controlHome
而不是
http://localhost/CI-example/site/index.php/control/controlHome
在您的ajax URL中。
从您的文件夹结构来看,当您向服务器发送ajax请求时,不需要在URL中包含“site”,而返回的是
500(内部服务器错误)
。我确信错误来自服务器端,可能有以下原因-
base\u url
与您请求的内容不同。是的,这可能会导致问题,例如,如果您托管了web应用程序,并且您的base\u url
是www.mysite.com
,并且您正在请求mysite.com
MyModel.php
,但是当您加载模型时,它会生成错误,比如找不到特定的类在这里,当您向服务器发送ajax请求时,它返回
500(内部服务器错误)
。我确信错误来自服务器端,可能有以下原因-
base\u url
与您请求的内容不同。是的,这可能会导致问题,例如,如果您托管了web应用程序,并且您的base\u url
是www.mysite.com
,并且您正在请求mysite.com
MyModel.php
,但是当您加载模型时,它会生成错误,比如找不到特定的类您是否尝试过AJAX\u URL=“/CI-example/site/index.php/control/controlHome”?您不需要包含主机名,因为AJAX只对内部请求有效。您是否可能有重定向?尝试在单独的选项卡中调用URL,并查看“开发人员工具”的“网络”选项卡。@AustinMullins,我已经尝试过了,错误是最后一个错误question@Thomas. 我想没有redirection@vicenrele,检查塔图的答案:您是否尝试过
AJAX\u URL=“/CI-example/site/index.php/control/controlHome”
?您不需要包含主机名,因为AJAX只对内部请求有效。您是否可能有重定向?尝试在单独的选项卡中调用URL,并查看“开发人员工具”的“网络”选项卡。@AustinMullins,我已经尝试过了,错误是最后一个错误question@Thomas. 我想没有redirection@vicenrele,检查Tatu的回答:如果源请求源于与目标请求域相同的域,则不可能出现该错误。您知道是否存在子域而非域问题吗?如果源请求或