[英]AJAX POST request in JSON login
我正在嘗試使用AJAX創建一個非常簡單的登錄表單來進行服務器通信,並使用PHP作為服務器端腳本。 首先,我只是嘗試通過JSON將登錄數據發送到服務器,但這已經給我帶來了問題。
問題是,當我在AJAX中使用POST請求發送數據時,我的服務器似乎什么也沒得到,並且根本不返回任何數據。 這是請求的HTML:
<!DOCTYPE HTML>
<html>
<head>
<title> Login experiment </title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
$(document).ready(function AjaxJSON() {
$("form#loginForm").submit(function() {
var username = $('#username').val();
var password = $('#password').val();
var jsonlogin = "{\"username\" : \"" + username + "\" , \"password\" : \"" + password + "\"}";
var str = 'json=' + jsonlogin;
$.ajax({
type: 'POST',
url: 'login.php',
// URL of my PHP script
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: str,
success: function(data) {
alert("Data received!" + data);
}
});
// ajax
})
})
</script>
</head>
<body>
<h1> LOGIN: </h1>
<form id="loginForm" name="loginForm" method="post" action="">
<input type="text" id="username" name="username"> USERNAME <br>
<input type="password" id="password" name="password"> PASSWORD <br>
<input type="submit" class="button positive">
</form>
</body>
</html>
此HTML代碼應僅將以JSON字符串編碼的請求表單(用戶名和密碼)發送到PHP腳本。 該腳本是這樣的:
<?php
$result = json_decode($_POST['json']);
echo $result->username;
echo " ";
echo $result->password;
?>
為什么沒有顯示任何回復? 預先感謝您的幫助 :)
您的主要問題是您聲稱正在發送application/json; charset=utf-8
application/json; charset=utf-8
。 這是一個問題,有兩個原因:
$_POST
application/x-www-form-urlencoded
數據(其中包含(不正確轉義的)JSON字符串作為其數據之一) 如果要發送JSON,則:
JSON.stringfy
構建它, JSON.stringfy
不是將字符串JSON.stringfy
在一起 json=
如果您不依賴JSON,則只需使用標准方法來編碼表單數據即可:
jsonlogin
行 contentType
data: { username: username, password: password }
您的下一個問題是您說的是dataType: 'json'
但是您的PHP返回的是(無效的)HTML(PHP也容易受到XSS攻擊)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.