为什么 JQuery 没有在 PHP 操作方法中发布值?
Why JQuery is not posting the values in PHP Action Method?
为什么 JQuery 没有在 PHP 操作方法中发布值?
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' );
}
}
我相信 .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 数据的服务器错误日志。
看了你的代码,我的感觉是,去掉这一行:
contentType: "application/json; charset=utf-8",
它会起作用的。其他一切看起来都很好。
为什么 JQuery 没有在 PHP 操作方法中发布值?
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' );
}
}
我相信 .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 数据的服务器错误日志。
看了你的代码,我的感觉是,去掉这一行:
contentType: "application/json; charset=utf-8",
它会起作用的。其他一切看起来都很好。