在Javascript Vanilla中使用带AJAX的POST时如何格式化参数?

时间:2017-09-19 14:56:33

标签: javascript php html ajax post

我还没有找到这个问题的明确答案 我认为这会有所帮助,因为它并不明显,至少对我而言。

我想知道如何格式化在AJAX中使用POST传递的参数 例如,我下面的代码使用数据变量作为参数 我知道输入字段值应该伴随着' +'签字。
但我不知道输入字段的值是第一还是第二,我不知道它是否应该在字段名称或id或其他内容旁边......

    var xhttp = new XMLHttpRequest();
    var url = 'test.php';
    var input = document.getElementById('input').value;
    var data = 'whatshouldgohere?='+input;

    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            this.responseText;
        }

        xhttp.open('POST', url, true);
            xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xhttp.send(data);
    }

欢迎任何有关上述代码的其他提示。

2 个答案:

答案 0 :(得分:0)

我以前用过这个:

xhttp.setRequestHeader("Content-type", "application/json");
xhttp.send(JSON.stringify(data));

如果您没有强制使用application/x-www-form-urlencoded,我认为在JavaScript中使用JSON更容易。

答案 1 :(得分:0)

您应该始终将参数命名为您的函数所期望的参数。所以test.php可能需要2个变量,id和boolean。所以你想发送它

var data = 'id=' + id + '&boolean=' + boolean;

并且test.php将根据您在查询参数中调用它们来知道哪个是哪个。所以要阐述这个,比如

var data = 'id=' + boolean + '&boolean=' + id;

可能会引发错误,因为您的端点将错误地应用这些参数。很容易想到一个端点就像一个函数(你有一个参数顺序和CAN命名它们你喜欢的任何东西)但查询参数(至少根据我的经验)没有排序,必须正确命名。

我希望能回答你的问题!