Javascript 将数据从ajax传输到PHP的问题

Javascript 将数据从ajax传输到PHP的问题,javascript,php,jquery,sql-server,ajax,Javascript,Php,Jquery,Sql Server,Ajax,我试图将一个键值对的关联数组从客户端(javascript)发送到服务器(php)。数组的大小或值不是固定的。需要将用户选择的选项从一个页面转发到另一个页面。不使用表格 尝试使用ajax,但php没有正确接收数组。使用php7、jQuery2.4.1、SQLServer和javascript javascript/jquery var contributeArr = {}; $(document).on("change", ".contribute_txt", function() {

我试图将一个键值对的关联数组从客户端(javascript)发送到服务器(php)。数组的大小或值不是固定的。需要将用户选择的选项从一个页面转发到另一个页面。不使用表格


尝试使用ajax,但php没有正确接收数组。使用php7、jQuery2.4.1、SQLServer和javascript

javascript/jquery

var contributeArr = {};
$(document).on("change", ".contribute_txt", function() {
    // some other code
    contributeArr[this.id] = this.value;
});

$('#contri_submit').click(function(e) {
    e.preventDefault();
    var error = false; 
    var contributeArray = JSON.stringify(contributeArr);
    var url = 'chapter.php';            
    var formData = new FormData();
    if (error == false) { 
        formData.append("contributeArray", contributeArray); 
    }
    else { 
        console.log("Something went wrong. Check your code."); 
    }

    for (var pair of formData.entries()) {
        console.log(pair[0]+ ', ' + pair[1]); 
    }

    $.ajax({
        type: "POST",
        url: url,
        data: formData,
        cache: false,
        processData: false,
        contentType: false,
        success: function(result) {
            window.setTimeout(function() {
                window.location.href = url;
            }, 2000);
        },error: function(xhr,request,error) {
            alert(error);
        }
    });
    return false; 
});
php

控制台日志中的示例数据:

contributeArray, {"LECH":"10","MASC":"20","PMEM":"30","LVME":"50"}

注意:不确定
//其他一些代码是什么。。。假设你的目的是正确的

假设您正在验证$u POST数据

var contributeArr = {};
$(document).on("change", ".contribute_txt", function() {
    // some other code
    contributeArr[this.id] = this.value;
});

$('#contri_submit').click(function(e) {
    e.preventDefault();
    var my_url_value = 'chapter.php';
    var real_url_to_ajax_app = 'https://realdomain.com/realfile.php';

    $.ajax({
        type: "POST",
        url: real_url_to_ajax_app,
        data: contributeArr,
        success: function(result) {
            window.setTimeout(function() {
                window.location.href = my_url_value;
            }, 2000);
        },error: function(error) {
            console.log(error);
        }
    });
    return false; 
});
在您的PHP中:

// assuming you are initializing $_SESSION['contribution'] per your needs

foreach ($_POST as $key => $value) {
    // validate key/value here
    $_SESSION['contribution'][$key] = $value;
}

echo 'some helpful response';

exit; // required

请使用json_解码并包含最新的jQuery


如果您还没有解决问题,我可以解决您的代码

“php没有正确接收数组”您到底是如何检查的?请提供样本数据、当前结果和预期结果。一如既往。。。一旦您接受用户输入的信息并将其传递给服务器。。。是否验证数据的安全性?是否使用浏览器的开发人员工具查看AJAX的请求/响应?是否确保
$\u POST['contributarray']在尝试使用
foreach
之前,已经将
解码到数组中了吗?你为什么要首先使用
JSON.stringify
formData
之类的东西?只需将
contributarr
直接传递到带有
数据的帖子:contributarr
不理解这里的“真正的url到ajax应用程序”。响应需要指向的URL是“chapter.php”,那么有另一个响应又有什么意义呢url@Rohan因为ajax.url必须是处理它的服务器端PHP的完整url。。。它并不是简单地存储一些值。。。这是发布AJAX的地方,您是否确认在服务器上收到了AJAX帖子?接收未正确处理的数据是一回事。。。另一个完全不接收数据的人。。。发布时由ajax error设置的
error
var是最有用的(imo)。。。这就是为什么我将error重新编码为第一个返回的var,并将其重新编码为console.log,而不是。。。什么是
错误
输出?这将缩小范围相当多…没有得到任何错误。我已经尝试了您建议的解决方案,但在服务器上没有响应。我收到一个对象作为响应,但php无法读取它。尝试打印($\u POST);;未产生任何结果。已尝试json_解码和最新jquery。所有的解决方案都在这里,不需要任何专业服务。谢谢。可能还有其他问题,但我已经尝试并修改了你的代码,效果很好
// assuming you are initializing $_SESSION['contribution'] per your needs

foreach ($_POST as $key => $value) {
    // validate key/value here
    $_SESSION['contribution'][$key] = $value;
}

echo 'some helpful response';

exit; // required