ajax帖子无法重定向到操作

时间:2014-09-16 16:23:35

标签: php jquery ajax codeigniter post

Javascript:

$("#containerr").on('click', '#select', function() {
        data = {};
        val = {
               "name": 'John',
               "id": 10,
                }
        data.user = JSON.stringify(val);
        data.token = $("input[name=token]").val();
        console.log(data);
        url = '/test/ajax/';
        $.ajax({
            url: url,
            type: "POST",
            data: data,
            success: function(data) {
                alert('success');
            },
            error: function(xhr, ajaxOptions, error) {
                alert(xhr.status);
                alert(error);
            },
        });
        return true;
    });

PHP:

public function ajax()
{
       $input = $this->input->post();
       print_r($input['user']);
}

HTML:

<div id="container">
       <input type="hidden" name="token" value="8sdf243dfa426b2sfwe434fdg43gwsf" />
       <button type="submit" id="select">Select</select>
</div>

说明

当我点击选择按钮时,我会看到后期操作的结果。 php函数中的print_r($input)也返回所需的结果。但是,由于我没有使用表单来执行此提交,因此浏览器不会重定向到后期操作(在这种情况下为/test/ajax/)。我可以在firebug控制台上看到重定向,但浏览器实际上并没有重定向到该链接。当我尝试window.location = 'http://www.mybaseurl.com/'+url时,我再也无法访问数据了,我失去了data。如何将浏览器重定向到帖子操作url并仍然保留data

编辑javascript:

$("#container").on('click', '#select', function() {
            data = {};
            val = {
                   "name": 'John',
                   "id": 10,
                    }
            data.user = JSON.stringify(val);
            data.token = $("input[name=token]").val();
            console.log(data);
            url = '/test/ajax/';
            $.post(url, data, function(data) {
            alert('success');
            });
            return true;
        });

1 个答案:

答案 0 :(得分:2)

AJAX的全部意义在于它不会重定向到您定义的URL,它只是向其发送数据。如果您希望用户在AJAX调用完成后转到URL,您可能不想使用AJAX。只需使用常规表格。

<form method="POST" action="/test/ajax">
  <input type="hidden" name="token" value="8sdf243dfa426b2sfwe434fdg43gwsf" />
  <button type="submit" id="select">Select</select>
</form>

编辑:

根据您发送的数据,表单实际上就像

<form method="POST" action="/test/ajax">
  <input type="text" name="name" />
  <input type="text" name="id" />
  <input type="hidden" name="token" value="8sdf243dfa426b2sfwe434fdg43gwsf" />
  <button type="submit" id="select">Select</select>
</form>