无法访问通过 jQuery ajax 发送的我的 Post 值
编辑:使用 .htaccess 删除“index.php”会创建我刚刚发现的这个问题。现在我要着手解决它。
编辑:问题已解决。 JavaScript 是错误的: url: "/login/"
它需要一个尾部斜杠。
原始:在我的主页视图中,我创建了一个表单:
<div id="login"><?php
echo form_open('login');
echo form_input('username', 'Username', 'id="username"');
echo form_submit('submit', 'Login', 'id="login_submit"');
echo form_close();
?></div>
使用一些基本的 javascript(感谢 Nettuts)我尝试实现一些 ajax:
$('#login_submit').click(function() {
var form_data = {
username: $('#username').val(),
password: $('#password').val()
};
$.ajax({
url: "/login",
type: 'POST',
data: form_data,
success: function(msg) {
$('#login').html(msg);
}
});
return false;
});
如您所见,它将表单值发送到登录控制器。
class Login extends CI_Controller {
function index()
{
if($this->input->is_ajax_request())
{
echo '<h2>Login succeeded with ajax</h2>';
}
else
{
echo '<p>But your ajax failed miserably</p>';
}
}
}
问题是,它不起作用。函数$this->input->is_ajax_request()
输出FALSE。忽略这一点,所有其他帖子数据都会丢失。 什么都没有完成。
我做错了什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为您的问题可能是您实际上没有发送到正确的脚本。您的 url /login 看起来不会到达 Codeigniter URL(http://domain.com/index.php/login 或 http://domain.com/my_app/index.php/login)。
尝试将 url 更改为控制器的完整 url 位置或正确的绝对路径。要么:
要么
除非您重写了 url,否则 /login 可能不会联系正确的脚本。
I think your problem could be that you're not actually sending to the correct script. Your url /login doesn't look like it will get to a Codeigniter URL (http://domain.com/index.php/login or http://domain.com/my_app/index.php/login).
Try changing the url to either the full url location of the controller or to a proper absolute path. Either:
or
Unless you've rewritten the urls then /login probably won't contact the correct script.
当我使用 PHP 和 Jquery AJAX 发送发布值时,这为我指明了正确的方向。我正在使用 .htaccess 重写 url,以删除 .php 扩展名。发布值没有传递到我的 sendmail.php 文件。我通过将 post 请求的 url 从 更改为 解决了这个
问题
This set me in the right direction when i was using PHP and Jquery AJAX to send post values. I am using .htaccess to rewrite the url so as to remove the .php extension. Post values were not being passed on to my sendmail.php file. I solved this by changing the url of the post request from
to