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

发布于 2024-11-04 16:47:24 字数 1324 浏览 0 评论 0 原文

编辑:使用 .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。忽略这一点,所有其他帖子数据都会丢失。 什么都没有完成。

我做错了什么?

EDIT: Removing the 'index.php' with .htaccess creates this probem I just discovered. Now I'm on to resolving it.

EDIT: Problem solved. The javascript was wrong: url: "/login/" It needed a trailing slash.

ORIGINAL: In my home view, I created a form:

<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>

With some basic javascript (thanks to Nettuts) I tried to implement some 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;
});

As you can see, it sends the form values to the login controller.

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>';
    }
}

}

The problem is, it doesn't work. The function $this->input->is_ajax_request() outputs FALSE. Ignoring that, every other post data is missing. Nothing is put through.

What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

樱娆 2024-11-11 16:47:24

我认为您的问题可能是您实际上没有发送到正确的脚本。您的 url /login 看起来不会到达 Codeigniter URL(http://domain.com/index.php/login 或 http://domain.com/my_app/index.php/login)。

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

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

要么

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

除非您重写了 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:

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

or

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

Unless you've rewritten the urls then /login probably won't contact the correct script.

纸伞微斜 2024-11-11 16:47:24

当我使用 PHP 和 Jquery AJAX 发送发布值时,这为我指明了正确的方向。我正在使用 .htaccess 重写 url,以删除 .php 扩展名。发布值没有传递到我的 sendmail.php 文件。我通过将 post 请求的 url 从 更改为 解决了这个

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

问题

url:'/sendmail'

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

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

to

url:'/sendmail'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文