为什么JQuery没有在PHP Action Method中发布值?
HTML
<form id="login" name= "login">
<h1>Login Form</h1>
<div>
<input type="text" id= "userName" name = "userName" class="form-control"/>
</div>
<div>
<input type="password" id= "password" name = "password" class="form-control" />
</div>
<div>
<input type="button" onclick="Authenticate();" value="Log In" />
</div>
<div class="clearfix"></div>
<div class="separator">
<div class="clearfix"></div>
<br />
</div>
</form>
的JavaScript
function Authenticate() {
$.ajax({
url: 'My Url',
type: "POST",
async: true,
data: $('#login').serialize(),
contentType: "application/json; charset=utf-8",
success: function (data) {
},
error: function (data) {
}
});
}
PHP
public function AuthenticateUser() {
if( isset( $_POST['userName'] ) && isset( $_POST['password'] ) ) {
header('Content-Type: application/json');
echo json_encode( 'ok' );
}
else {
header('Content-Type: application/json');
echo json_encode( 'Not Ok' );
}
}
答案 0 :(得分:2)
通过查看您的代码,我的感受是,删除这一行:
contentType: "application/json; charset=utf-8",
它会起作用。其他一切看起来都不错。
答案 1 :(得分:0)
我确信.serialize()有效,但我的建议是尝试将$('#login').serialize()
替换为:
data: {userName: $('#userName').val(), password:$('#password').val() }
原因是要精确控制通过AJAX调用提交的数据。
并且您的AuthenticateUser应该通过POST开始按预期工作。
您不需要通过contentType: "application/json; charset=utf-8"
,因此请删除此行。
在确定哪些参数传递到您的应用时,您可以
echo json_encode($_POST);
并查看传递给您脚本的内容。
当然,您也可以使用error_log(json_encode($_POST))
并为服务器错误日志添加POST数据。