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;
});
答案 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>