通过 Ajax 将 Javascript 对象发送到 PHP

2022-08-30 18:12:05

我正在通过失败来学习Ajax,并且碰壁了:

我有一个数组(如果很重要,数组是根据用户检查的复选框来存储数字id的),它是用Javascript编写的。

我有一个函数,当用户单击“保存”按钮时调用该函数。功能如下:

function createAmenities() {
    if (window.XMLHttpRequest) {
        //code for IE7+, Firefox, Chrome and Opera
        xmlhttp = new XMLHttpRequest();
    }
    else {
        //code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById('message').innerHTML = xmlhttp.responseText;
        }
    }

    var url = "create_amenities.php";

    xmlhttp.open("GET", url, true);

    xmlhttp.send();

}

我的问题是:我可以在这个函数中放入什么来将数组拉入我试图调用的php脚本中(“create_amenities.php”)?

此外,我应该尝试使用JSON吗?如果是这样,我该如何通过ajax发送JSON对象?

提前致谢。


答案 1

如果您的数组具有多个 1 维或是关联数组,则应使用 JSON。

Json 将完整的数组结构转换为字符串。这个字符串可以很容易地发送到你的php应用程序,并转换回一个php数组。

有关 json 的更多信息:http://www.json.org/js.html

var my_array = { ... };
var json = JSON.stringify( my_array );

在php中,你可以用json_decode解码字符串:

http://www.php.net/manual/en/function.json-decode.php

var_dump(json_decode($json));

答案 2

遍历数组,每次都追加到查询字符串。encodeURIComponent('keyname[]') + '=' + encodeURIComponent(theArray[i]) + '&'

此外,我应该尝试使用JSON吗?

你可以,但这意味着在另一端解码JSON,而不是让正常的形式处理来处理它。

如果是这样,我该如何通过ajax发送JSON对象?

没有 JSON 对象这样的东西。JSON 采用字符串的形式,您可以在查询字符串中包含字符串(请记住)。encodeURIComponent