无法通过jQuery ajax访问我的Post值

时间:2011-05-02 08:29:00

标签: jquery ajax codeigniter post

编辑:使用.htaccess删除'index.php'会创建我刚刚发现的这个探测器。现在我要解决它。

编辑:问题已解决。 javascript错误:url: "/login/"它需要一个尾随斜杠。

ORIGINAL :在我的主视图中,我创建了一个表单:

<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。忽略这一点,缺少其他所有帖子数据。 没有任何东西可以通过。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

我认为您的问题可能是您实际上没有发送到正确的脚本。您的网址/登录信息似乎无法访问Codeigniter网址(http://domain.com/index.php/login或http://domain.com/my_app/index.php/login)。

尝试将网址更改为控制器的完整网址位置或更改为正确的绝对路径。要么:

url: "http://yourdomain.com/index.php/login",

url: "/my_app/index.php/login",

除非您重写了网址,否则/ login可能无法联系正确的脚本。

答案 1 :(得分:1)

当我使用PHP和Jquery AJAX发送帖子值时,这让我朝着正确的方向前进。我正在使用.htaccess重写url以删除.php扩展名。帖子值未传递到我的sendmail.php文件。我通过更改

的帖子请求的网址解决了这个问题
id="idValue"

$.ajax({
                            url:'sendemail.php',
                            method:'post',
                            data:{
                                fname:fname,
                            },
                            success:function (e) {
                                alert(e);
                            }
                        });