【问题标题】:Codeigniter ajax request fail on outputCodeigniter ajax 请求在输出时失败
【发布时间】:2011-10-10 13:23:26
【问题描述】:

我正在尝试使用 jquery/codeigniter 发出 ajax 请求。嗯,好像有问题。我确实让它工作了,但似乎由于某种原因没有发送 POST...

Javascript

    $('#profileUpdateButton').click(function() {

        $.ajax({ // Starter Ajax Call

            method: "POST", 
            url: baseurl + 'profile/statusUpdate', 
            data: $('#statusUpdateForm').serialize(),
            success: function(data) { 
                alert(data);
            }

        });

        return false;

    });

来自 codeigniter 控制器

    if($this->input->is_ajax_request()) {
        echo $this->input->post('profileUpdate');
    }

如果我用 echo "Hello" 替换 "echo $this->" 等,我会得到一个带有 "Hello" 的警报框,为什么我不能从框中获取文本?

html

    <div id="statusUpdate">
        <?php echo form_open(base_url() . 'profile/statusUpdate', array('name' => 'statusUpdateForm')); ?>
            <input type="text" value="Hva tenker du på?" name="profileUpdate" id="profileUpdate" onfocus="if(this.value == 'Hva tenker du på?')this.value=''" onblur="if(this.value == '')this.value='Hva tenker du på?'" />
            <input type="submit" value="" name="profileUpdateButton" id="profileUpdateButton" />
        <?php echo form_close(); ?>
    </div>

【问题讨论】:

  • 您是否尝试过提醒 $('#statusUpdateForm').serialize() 进入点击事件处理程序?
  • 运行var_dump($_POST) 时发生了什么?应该是您的默认调试工具之一:php.net/manual/en/function.var-dump.php
  • 如果我 var_dump 我得到 array(0){} 和警报 $('#statusUpdateForm').serialize() 给我prntscr.com/2ecwh

标签: javascript ajax codeigniter frameworks


【解决方案1】:

将您的 html 标记更改为此...

<div id="statusUpdate">                   <!-- Use ID not NAME here |v| -->
    <?php echo form_open(base_url() . 'profile/statusUpdate', array('id' => 'statusUpdateForm')); ?>
        <input type="text" value="Hva tenker du på?" name="profileUpdate" id="profileUpdate" onfocus="if(this.value == 'Hva tenker du på?')this.value=''" onblur="if(this.value == '')this.value='Hva tenker du på?'" />
        <input type="submit" value="" name="profileUpdateButton" id="profileUpdateButton" />
    <?php echo form_close(); ?>
</div>

您正在设置表单的 name,并且您选择了 $('#statusUpdateForm'),这意味着 statusUpdateForm 的 id,而不是 name 属性...

【讨论】:

    猜你喜欢
    • 2018-09-16
    • 2017-04-02
    • 2018-11-30
    • 1970-01-01
    • 2013-01-15
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    相关资源
    最近更新 更多