使用AJAX将数据从PHP传递到JavaScript时遇到麻烦

时间:2019-07-06 18:59:08

标签: javascript php html database forms

好吧,首先,我为这个问题表示歉意,但是我对Web开发还很陌生。

我正在尝试建立一个用户可以在其中操纵事件数据库的系统。我仅用php即可正确实现,但是现在,我应该将RESTful架构添加到已经完成的工作中,因此我正在尝试制作REST API。

我正在尝试举一个例子:addEventToDB.php具有一个事件名称的表单,该事件将在提交给midPoint.js时添加到数据库中,该事件随后应返回到html页面,但是创建了一个对象,其中包含操作是否成功以及名称是否已更新。 Uncaught SyntaxError: Unexpected token < in JSON at position 0脚本应该能够获取该对象,并基于该脚本在html页面上创建一段说明操作成功和事件名称的段落。由于某些原因,这永远不会起作用,只会返回错误 <form action="addEventToDB.php" method="post" class="form-group list-group col-6 offset-3"> <h1 class="display-3"> Add Event </h1> <div class="form-group"> <label for="eventName">Name</label> <input type="text" name="eventName" id="eventName" class="form-control" placeholder="Name" aria-describedby="helpId"> </div> <p id="demo"> </p> <button type="submit" class="btn btn-primary"> Add </button> </form> ,而不是添加上述段落。

这是我的第一个实验,但是我认为这是向项目添加REST体系结构的最佳方法。

example.html

var xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange = function () {
    if (this.readyState == 4 && this.status == 200) {
        var responseArray = JSON.parse(this.responseText);

        document.getElementById("demo").innerHTML = responseArray.addResult;
    }
};

xmlhttp.open("GET", "addEventToDB.php", true);
xmlhttp.send();

midPoint.js

$eventName = $_POST['eventName'];

if(isset($eventName)){
    $sql = "INSERT INTO evento(`Nome`) VALUES ('{$eventName}')";
    $result = $conn->query($sql);

    if ($result === true) {
        $responseArray->addResult = true;
        $responseArray->uploadValue = $eventName;
    } else {
        $responseArray->addResult = false;
        $responseArray->uploadValue = $eventName;
    }
} else {
    $responseArray->addResult = false;
    $responseArray->uploadValue = $eventName;
}

$myJSON = json_encode($responseArray);

echo $myJSON;

header('Location: experiment.html');

addEventToDB.php

{{1}}

我试图确保该项目使用REST,这是我想到的添加它的最佳方法,但是我似乎无法使其正常工作。该js文件原本应该在JSON文件上获取数据并打印该段落,但我不知道如何使其工作。

1 个答案:

答案 0 :(得分:0)

您的数组必须像这样才能被json_encode使用

$responseArray= array(
   'item' => array(
     'addResult' => true,
     'uploadValue' => $eventName
   )
 );