代码之家  ›  专栏  ›  技术社区  ›  Eugen-Andrei Coliban HARI PRASAD GANGI

通过xmlhttprequest将数据从js传递到php

  •  0
  • Eugen-Andrei Coliban HARI PRASAD GANGI  · 技术社区  · 6 年前

    我现在面临的问题是,将JS对象发送到PHP,我发现应该通过 HtmlHttpRequest 但是问题是我对PHP还是个新手,而且我不太了解 XmlHttpRequest 作品。我尝试过不同的方法,但我发现适合我的方法会不断地返回相同的错误。代码将在下面发布,现在关于这个问题,我可以执行这个请求,但是当我执行这个请求时,PHP端会返回一条错误消息,指出存在一个未定义的索引。

    这是所需要的代码

    JS部分:

    function createTransaction() {
        var xmlhttp = new XMLHttpRequest();
        var newTransaction = {"name": document.getElementById('wallets').value}
        newTransaction.data = {
            "transactionID": document.getElementById('trans-id').value,
            "time": document.getElementById('creation-time').value,
            "senders": getSenders(),
            "receivers": getReceivers(),
            "finalSum": setSum()
        };
        xmlhttp.open('POST', '/admin.php', true);
        xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
        xmlhttp.onreadystatechange = function () {
            if (this.readyState === 4 || this.status === 200) {
                console.log(this.responseText); // echo from php
            }
        };
        xmlhttp.send({newTransaction});
        console.log(JSON.stringify(newTransaction));
    }
    

    简短描述:在这个函数中,我生成一个对象,然后通过 XMLHTTPROQUEST 使用A POST 请求,也就是说,在PHP方面,有一个变量可以捕获这个请求并对其进行响应。代码如下:

    $newTransaction = $_POST['newTransaction'];
    echo $newTransaction;
    

    什么错误和/或如何更好地解决此问题?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Quentin    6 年前

    1. xmlhttp.send(JSON.stringify({newTransaction})); "[object Object]"
    2. this answer
        2
  •  -1
  •   Carlos Salazar    6 年前

    XmlHttpRequest Ajax POST key : values

    <input name="transactionID">
    <input name="time">
    <input name="senders">
    <input name="receivers">
    <input name="finalSum">
    

    $_POST

    {
        "transactionID": "some id",
        "time": "some time",
        "senders": "some senders",
        "receivers": "some receivers",
        "finalSum": "final sum"
    }
    

    inputs html

    newTransaction.data = {
        "transactionID": document.getElementById('trans-id').value,
        "time": document.getElementById('creation-time').value,
        "senders": getSenders(),
        "receivers": getReceivers(),
        "finalSum": setSum()
    };
    xmlhttp.send({newTransaction});
    

    admin.php

    {
        "data" : {
            {
                "transactionID": "some id",
                "time": "some time",
                "senders": "some senders",
                "receivers": "some receivers",
                "finalSum": "final sum"
            }
        }
    }
    

    1. echo var_dump($_POST);die();