【问题标题】:Can't access my Post values send through with jQuery ajax无法访问通过 jQuery ajax 发送的我的 Post 值
【发布时间】:2011-05-02 08:29:00
【问题描述】:

编辑:使用 .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-&gt;input-&gt;is_ajax_request() 输出FALSE。忽略这一点,所有其他帖子数据都丢失了。 什么都没有通过。

我做错了什么?

【问题讨论】:

  • 你的 jQuery 点击处理程序 $(document).ready(... 包装了吗?

标签: jquery ajax codeigniter post


【解决方案1】:

我认为您的问题可能是您实际上并未发送到正确的脚本。您的 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 可能不会联系到正确的脚本。

【讨论】:

  • 我稍微编辑了代码。该脚本确实有效,并且具有其 index() 方法的控制器确实被调用了。回显某些内容实际上会用其内容替换 div。这是没有通过的帖子数据。 :(
  • 您能否在发送之前 console.log() form_data 并确保数据符合您的预期?还要确保将 jQuery 包装在 $(document).ready(function () { //jQuery } 中,否则 jQuery 将无法正确获取输入字段的值。
  • 我添加了文档准备功能。 Firebug 说: Object { username="Username", password="Password"} 看来post数据设置正确了。
  • 使用 .htaccess 删除“index.php”会创建我刚刚发现的这个问题。现在我正在解决它。
  • 看起来你一开始是对的。网址有点错误。它需要一个斜杠。感谢您的帮助!
【解决方案2】:

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

更改发布请求的网址解决了这个问题
$.ajax({
                            url:'sendemail.php',
                            method:'post',
                            data:{
                                fname:fname,
                            },
                            success:function (e) {
                                alert(e);
                            }
                        });

url:'/sendmail'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 2013-09-19
    • 1970-01-01
    • 2019-07-18
    • 2013-02-15
    相关资源
    最近更新 更多