После тонких кодировок, я чувствую, что, наконец, я обволакиваю голову вокруг AJAX, JSON и CI.CI_model не правильно считывает данные POSTED JSON
Однако, я чувствую, что ударил одну последнюю загвоздка. Ниже мой код:
HTML
<div id="structures">
<h1>Build</h1>
<form name="buildForm" id="buildForm" method="POST" action="<?php echo base_url(); ?>/ajax/index/">
<select name="buildID" class="buildClass">
<option value="0" selected="selected" data-skip="1">Build a Structure</option>
<?php foreach ($structures as $structure_info): ?>
<option name='<?php echo $structure_info['str_name'] ?>' value='<?php echo $structure_info['str_id'] ?>' data-icon='<?php echo $structure_info['str_imageloc'] ?>' data-html-text='<?php echo $structure_info['str_name'] ?><i>
<?php echo $structure_info['timebuildmins'] ?> minutes<br><?php echo $structure_info['buy_gold'] ?> gold</i>'><?php echo $structure_info['str_name'] ?></option>
<?php endforeach ?>
</select>
<div id="buildSubmit">
<input id ="btnSubmit" class="button" type="submit" value="Submit"/>
</div>
</form>
</div>
Здесь я просто строю свою форму.
AJAX/JS
$(function(){
$("#buildForm").click(function(e, buildID){
e.preventDefault();
var frm = $(document.buildForm);
var dat = JSON.stringify(frm.serializeArray());
alert("I am about to POST this:\n\n" + dat);
$.post(
frm.attr("action"),
dat,
function(response)
{
alert(response);
}
);
});
});
Модель Функция
Я создал новое расширение класса контроллера "Ajax" и функция "индекс" Это просто вызывает моя модель «insert_build. " Мое обходное решение - взять файл .js со страницы и сохранить его в заголовке.
В любом случае. Когда я нажимаю кнопку отправки, он успешно предупреждает о выходе JSON. Хотя после того, как он передается в модель controller->, он, похоже, никуда не улавливается. Я предполагаю, что делаю это неправильно, но не могу понять, что.
Спасибо за помощь.
Не уверен, если это просто, как вы вставили его в SO, но «$ this-> вход-> пост (Дат)» должно быть «$ this-> вход-> сообщение ('dat') " – Tjkoopa
Небольшой намек, который может помочь вам в будущем. Дайте console.log попробовать вместо предупреждений. Это просто делает вещи более элегантными;). –