[英]Use built-in jQuery to send ajax form data with default setup
源代碼:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
header('Content-Type: application/json');
echo json_encode($_POST);
exit(0);
}
?>
<html>
<head>
<title>Web Test</title>
<script src="js/jquery.min.js"></script>
</head>
<body>
<form id="formTest">
<input name="username" value="admin" />
<input name="password" type="password" value="admin_pass" />
</form>
<script type="text/javascript">
$.ajaxSetup({
data: {role: 'admin'} //(I)
});
//Ajax to current page
$.ajax('test', {
method: 'post',
data: $('#formTest').serialize() //(II)
,success: function(res){
console.log(res);
}
});
</script>
</body>
</html>
我想通過 jQuery AJAX 發送表單數據,並將默認數據 ( role=admin
) 附加到每個 AJAX 請求,但它無法正常工作。
我采取一些如下的選擇:
data: {role: 'admin'} //(I)
(默認數據)data: $('#formTest').serialize() //(II)
(用於表單數據){username: "admin", password: "admin_pass"}
data: 'role=admin' //(I)
data: $('#formTest').serialize() //(II)
data: [{name: 'role', value: 'admin'}] //(I)
data: $('#formTest').serializeArray() //(II)
data: {role: 'admin'} //(I)
data: {username: 'admin', password: 'admin_pass'} //(II)
$('#formTest').serializeObject()
(from here )。
那么,有沒有什么辦法可以只用jQuery來解決這個問題呢?
JQuery 提供ajaxSetup
和serialize/serializeArray
方法,但它們似乎不能很好地相互配合。
為什么不附加一個帶有所需數據的變量?
<html>
<head>
<title>Web Test</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<form id="formTest">
<input name="username" value="admin" />
<input name="password" type="password" value="admin_pass" />
</form>
<script>
var theRole = '&role=admin';
//Ajax to current page
$.ajax('test.php', {
method: 'post',
data: $('#formTest').serialize() + theRole,
success: function(res) {
console.log(res);
}
});
</script>
</body>
</html>
編輯
另一種方法,使用 ajaxSetup()
<html>
<head>
<title>Web Test</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<form id="formTest">
<input name="username" value="admin" />
<input name="password" type="password" value="admin_pass" />
</form>
<script>
$.ajaxSetup({ data: {role: 'admin'} });
//Ajax to current page
$.ajax('test.php?' + $('#formTest').serialize(), {
method: 'post',
success: function(res) {
console.log(res);
}
});
</script>
</body>
</html>
然后必須使用 json_encode( $_REQUEST ) 代替。
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
header( 'Content-Type: application/json' );
echo json_encode( $_REQUEST );
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.