javascript - 使用 AJAX 和 JSON 将 JavaScript 数据发送到服务器并从服务器检索数据

标签 javascript php json ajax

我是 AJAX 和 JSON 新手。我从这个链接找到了一些代码并修改了它: send json object from javascript to php

我想要的是这样的: 我在 JavaScript 中有一些动态数据(变量、数组等)(用户可以在运行时更改这些值)。现在我想将此数据发送到服务器并将其保存在 PHP 文件中。我还想从服务器检索更新的数据。简而言之,我想从客户端保存到服务器并从服务器加载到客户端。

我在“alert(jsondata.num);”行上的 Load() 中出现错误:无法读取 XMLHttpRequest.xhr.onreadystatechange 的 null 属性“num”

PHP:

<?php
  header('Content-type: application/json');
  $json = file_get_contents('php://input');
  $json_decode = json_decode($json, true); 
  $json_encode = json_encode($json_decode);
  echo $json_encode;
?>

JavaScript:

function Save() {
  var jsondata;
  var num = {"num":Math.floor(Math.random()*100)};
  var data = JSON.stringify(num);

  var xhr = new XMLHttpRequest();
  xhr.open("POST", "demo.php", !0);
  xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
  xhr.send(data);
  xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhr.status === 200) {
      // in case we reply back from server
      jsondata = JSON.parse(xhr.responseText);
      console.log(jsondata);
      alert(jsondata.num);
    }
  }
}
function Load() {
  var jsondata;

  var xhr = new XMLHttpRequest();
  xhr.open("GET", "demo.php", !0);
  xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
  xhr.send();
  xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhr.status === 200) {
      // in case we reply back from server
      jsondata = JSON.parse(xhr.responseText);
      alert(jsondata.num);
    }
  }
}

最佳答案

为了清楚起见,我为您创建了这个。它允许用户发送电子邮件和姓名并向客户端返回 json 数据。有了这个,你现在已经掌握了基础知识..

<!doctype html>
<html>
    <head>
        <script 
  src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"> 
  type="text/javascript" charset="utf-8"></script>

<script>
$(document).ready(function(){

    // submit button click
    $("#submit").click(function(){


        var name = $("#name").val();
        var email = $("#email").val();

  alert(name);

        if(name != ''){
            $.ajax({
                url: 'demo.php',
                type: 'post',
                data: {name:name,email:email},
                dataType: 'JSON',
                success: function(response){
  alert(response.name);



           // selecting values from response Object
                    var name = response.name;
                    var email = response.email;

     var dt = "<div>";
     dt += "<b>Email:</b>"+email+"<br>";
     dt += "<b>name:</b>"+name+"<br>";

                }
            });
        }
    });

});

</script>

    </head>
    <body>
        <div class="container">
            <div class="content">
                <h1>Enter Details</h1>
                <div>
                    <input type="text" id="name" name="name" placeholder="Name">
                </div>

                <div>
                    <input type="email" id="email" name="email" placeholder="email">
                </div>

                <div>
                    <input type="button" value="Submit" id="submit">
                </div>
            </div>



            <div id="Result">

            </div>
        </div>
    </body>
</html>

演示.php

<?php

$name = $_POST['name'];
$email = $_POST['email'];

// insert into database 

//response
$return_arr = array('name'=>$name,'email'=>$email);

echo json_encode($return_arr);

关于javascript - 使用 AJAX 和 JSON 将 JavaScript 数据发送到服务器并从服务器检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58274554/

相关文章:

javascript - 如何使用 grunt 更改我的 HTML 文件以引用缩小的 JS 和 CSS 而不是未压缩的文件?

javascript - 启用插件后更改 TinyMCE HTML

javascript - jquery 以编程方式点击新的 dom 元素

php - 使用来自另一个数据库的选择查询更新 mysql 表

javascript - 如何在我的 JSON 数据中引用嵌套数组?

javascript - 尝试使用循环的结果并将其记录到控制台

php - 无法使用 PDO 从 MySQL 中获取多行

php - 使用点击功能显示 Blade 模型的数据

c# - 具有 "0"名称(零名称)的 JSON 结果 - 如何在 C# 中创建正确的类?

java - JPA ManyToMany 关系和 JSON 序列化