我是ajax的新手,我只是尝试了一些ajax的例子,但我不断收到这500个内部服务器错误。我在网上搜索解决方案,但似乎没有任何效果。但是,如果我将类型从POST更改为GET,则可以正常工作。
控制器:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class testingAjax extends CI_Controller
{
public function index()
{
$this->load->view('testingAjax_view');
}
public function getSomething()
{
$values = $this->input->post('testing');
echo $values;
}
}
js script
$(document).ready(
function ()
{
$('#callBackBtn').click(function()
{
jQuery.ajax({
type: "POST",
url: "testingAjax/getSomething",
data: {testing: "testing"},
success: function(data) {
$('#responseText').val(data);
},
error: function(xhr, text_status, error_thrown){
alert(error_thrown);
}
})
});
}
);
视图
<body>
<h3>Testing Ajax</h3>
<div class="entry-wrapper">
<input type="text" id="input_text">
<input type="button" value="Ajax Call Back" id="callBackBtn"/>
</div>
<div class="response_wrapper">
<textarea id="responseText"></textarea>
</div>
</body>
我在xammp上运行它。以下是apache错误日志(不确定它们是否有用)
[Wed May 13 00:31:53.251642 2015] [core:notice] [pid 25716:tid 456] AH00094: Command line: 'c:\\xampp\\apache\\bin\\httpd.exe -d C:/xampp/apache'
[Wed May 13 00:31:53.257646 2015] [mpm_winnt:notice] [pid 25716:tid 456] AH00418: Parent: Created child process 25724
[Wed May 13 00:31:57.895294 2015] [ssl:warn] [pid 25724:tid 460] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Wed May 13 00:31:59.065692 2015] [ssl:warn] [pid 25724:tid 460] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Wed May 13 00:31:59.205786 2015] [mpm_winnt:notice] [pid 25724:tid 460] AH00354: Child: Starting 150 worker threads.
Firebug显示错误:
POST http://localhost/ias/testingAjax/getSomething
500 Internal Server Error
30ms
答案 0 :(得分:1)
尝试
url:"/testingAjax/getSomething".
对于ajax调用,默认方法为GET
并且您没有向服务器发布任何form
或任何值,只需按下按钮即可调用ajax,这就是为什么它可能有效!当您将方法类型从POST
更改为GET
时,首先我认为您应该修复url
方法(默认:&#39; GET&#39;)
类型:String用于
的HTTP方法请求(例如&#34; POST&#34;,&#34; GET&#34;,&#34; PUT&#34;)
答案 1 :(得分:1)
我创建了一份你工作的新副本,这是一个你可以遵循的简单版本。
首先是正确设置你的项目。
首先我创建一个.htaccess文件到index.php文件夹同一目录的根文件夹,以创建一个漂亮的URL
这是一个简单的.htaccess内容文件
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
</IfModule>
您需要启用服务器的mod_rewrite扩展/配置
您可以通过查找appache / httpd.conf
来启用它找到“LoadModule rewrite_module modules / mod_rewrite.so”
删除#并保存并重启你的appache。
下一步是启用URL帮助程序
on
应用/配置/ autoload.php
$autoload['helper'] = array('url');
使用CI创建的url帮助器;
请参阅URL HELPER
接下来是设置默认控制器来执行此操作 应用/配置/ routes.php文件
$route['default_controller'] = 'testingAjax';
控制器testingAjax.php
<?php
class testingAjax extends CI_Controller
{
public function index()
{
$this->load->view('testingAjax_view');
}
public function getSomething()
{
$values = $this->input->post('testing');
echo $values;
}
}
视图testingAjax_view.php
<html>
<head>
<script type="text/javascript">
// get the base url of the project
var BASE_URL = "<?php echo base_url(); ?>";
</script>
</head>
<body>
<h3>Testing Ajax</h3>
<div class="entry-wrapper">
<input type="text" id="input_text">
<input type="button" value="Ajax Call Back" id="callBackBtn"/>
</div>
<div class="response_wrapper">
<textarea id="responseText"></textarea>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready( function() {
$('#callBackBtn').on('click', function(){
$.ajax({
type: "POST",
url: BASE_URL + "testingAjax/getSomething",
data: {testing: $('#input_text').val()},
success: function(data) {
$('#responseText').val(data);
},
error: function(xhr, text_status, error_thrown){
alert(error_thrown);
}
});
// But if you cannot setup the pretty url
// using .htaccess
// then you can use the
// BASE_URL+ "index.php/" + "testingAjax/getSomething
});
});
</script>
</body>
</html>
答案 2 :(得分:0)
将它放在根目录中的.htaccess文件中:
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
注意:强>
RewriteBase /
在这里很重要。