簡體   English   中英

JSON登錄中的AJAX POST請求

[英]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 這是一個問題,有兩個原因:

  1. PHP沒有用於處理JSON編碼的POST數據的內置方法,因此不會填充$_POST
  2. 您的數據不是JSON。 它是(不正確轉義的) application/x-www-form-urlencoded數據(其中包含(不正確轉義的)JSON字符串作為其數據之一)

如果要發送JSON,則:

  • 使用JSON.stringfy構建它, JSON.stringfy不是將字符串JSON.stringfy在一起
  • 不要在其前面粘貼json=
  • 根據此問題從POST正文中獲取數據

如果您不依賴JSON,則只需使用標准方法來編碼表單數據即可:

  • 忘記jsonlogin
  • 不要覆蓋默認的contentType
  • 將數據的對象傳遞給data參數: data: { username: username, password: password }

您的下一個問題是您說的是dataType: 'json'但是您的PHP返回的是(無效的)HTML(PHP也容易受到XSS攻擊)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM