【问题标题】:Usng JSON in codeigniter with form submit在带有表单提交的 codeigniter 中使用 JSON
【发布时间】:2012-03-06 18:59:53
【问题描述】:

我正在尝试学习如何在 codeigniter 中使用 JSON。我正在尝试使用模型来运行 ajax 代码,但它不起作用。

我需要学习如何将变量传递给模型,然后退出;或者,如果那不正确,我需要学习正确的过程。以下是我的代码。

HTML

<div id="structures">
    <h1>Build</h1>
    <form name="buildForm" id="buildForm" method="POST">
        <select name="buildID" class="buildClass">
        <option value="0" selected="selected" data-skip="1">Build a Structure</option>
    <option name='Town Center' value='1' data-icon='../img/structures/tc.png' data-html-text='Town Center<i>
        500 minutes<br>50000 gold</i>'>Town Center</option>
    <option name='Barracks' value='2' data-icon='../img/structures/barracks.png' data-html-text='Barracks<i>
        25 minutes<br>1500 gold</i>'>Barracks</option>
    <option name='Dragon Roost' value='3' data-icon='../img/structures/droost.png' data-html-text='Dragon Roost<i>
        200 minutes<br>5000 gold</i>'>Dragon Roost</option>
    <option name='Mage Hall' value='4' data-icon='../img/structures/mage.png' data-html-text='Mage Hall<i>
        40 minutes<br>300 gold</i>'>Mage Hall</option>
    <option name='Test Lab' value='6' data-icon='../img/structures/testlab.png' data-html-text='Test Lab<i>
        1 minutes<br>10 gold</i>'>Test Lab</option>
        </select>
        <div id="buildSubmit">
            <input id ="btnSubmit" class="button" type="submit" value="Submit"/>
        </div>
    </form>
</div>

这是我的 ajax/js/json 我正在尝试一个非常简单的例子。我想将上面(1-6)的OPTION的值发布到模型函数insert_build。我不知道它是否这样做,因为我真的想不出一个好的方法来测试它。但是,我假设如果它返回任何东西,我会收到警报。我不是。

$(function(){
    $(".button").click(function(e, value){
        e.preventDefault();

        $.ajax({
        type: "POST",
        url: "<?php $this->structure_model->insert_build() ?>",         //the script to call to get data          
        str_id: value,
        dataType: 'json',                //data format      
        success: function(data)          //on receive of reply
            {
                alert("success!");
            } 
        });
 });
});

型号代码

 public function insert_build()
        {
            $str_id = $this->input->post('str_id');
            echo " TESTING $str_id";
        }

任何帮助将不胜感激。为什么这不起作用?我仍在尝试了解 Codeigniter 和 JSON / JS 的基础知识。

谢谢

【问题讨论】:

    标签: php ajax json codeigniter


    【解决方案1】:

    您在 javascript 中设置的 url: 是您在提交 ajax 时要调用的实际函数。您需要有一个实际调用该函数的控制器,例如

    url: "<?php echo base_url(); ?>/structure/insert/?str_id=" + $('#buildID').val(),
    

    另外,将 dataType: 设置为 json 意味着您期望函数返回的内容被编码为 json。

    【讨论】:

    • 谢谢!有没有办法做到这一点而不需要 javascript 直接在页面源上?
    • 您可以在 javascript 变量中设置 base_url,然后只包含一个具有 ajax 代码的 js 文件。 var base_url = '&lt;?php echo base_url(); ?&gt;'; 然后更改您的 ajax url 以使用新的 base_url 变量
    • 谢谢,我会试试的。但是,虽然我能够收到响应和警报,但“TESTING”它没有返回变量“str_id”您能否编辑您的答案以包含该推理?谢谢!
    【解决方案2】:

    也许改变这个:

     url: "<?php echo $this->structure_model->insert_build() ?>"
    

    【讨论】:

    • 如果您查看所有示例代码,这并不能解决任何问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多