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>
Описание:
Когда я нажимаю кнопку выбора, я вижу результат действия публикации. print_r($input)
в функции php также возвращает желаемый результат. Однако, поскольку я не использую форму для выполнения этой отправки, браузер не перенаправляет на действие публикации (/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;
});
Весь смысл AJAX в том, что он не перенаправляет на указанный вами URL-адрес, а просто отправляет на него данные. Если вы хотите, чтобы пользователь переходил по URL-адресу после завершения вызова AJAX, возможно, вы не захотите использовать 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>
Других решений пока нет …