Javascript 如何使用AJAX将多个FormData对象发送到服务器并在服务器上访问这些对象

Javascript 如何使用AJAX将多个FormData对象发送到服务器并在服务器上访问这些对象,javascript,php,jquery,ajax,cakephp,Javascript,Php,Jquery,Ajax,Cakephp,我正在尝试开发一个页面,教师可以在其中为他们的学生创建测验。为此,页面上有两个表单。一个表单用于创建实际的测验,另一个表单用于创建测验中的问题 每次老师向测验中添加问题时,都会调用一个JS函数,该函数将问题数据本地保存在FormData对象中,然后将该对象放入一个问题数组中。请记住,问题表单上的输入之一是文件输入 当老师最终提交测验时,我使用一个AJAX调用将两项发送到服务器:一个包含测验数据的FormData对象和一个包含测验问题信息的FormData对象数组 我的问题是:如何访问服务器上的这

我正在尝试开发一个页面,教师可以在其中为他们的学生创建测验。为此,页面上有两个表单。一个表单用于创建实际的测验,另一个表单用于创建测验中的问题

每次老师向测验中添加问题时,都会调用一个JS函数,该函数将问题数据本地保存在FormData对象中,然后将该对象放入一个问题数组中。请记住,问题表单上的输入之一是文件输入

当老师最终提交测验时,我使用一个AJAX调用将两项发送到服务器:一个包含测验数据的FormData对象和一个包含测验问题信息的FormData对象数组

我的问题是:如何访问服务器上的这些不同对象?我使用的是CakePHP,所以我最初的想法是
$this->request->data[“quick”]
$this->request->data[“questions”]
,但我一直遇到“索引测验/未找到问题”错误。有没有更好的方式让我发送这些数据?非常感谢你能提供的任何帮助

Javascript

var questions = [];
var currentQuizQuestion = 0;    

function saveNewQuestion()
{
    var formData = new FormData(document.getElementById("inputQuestionForm"));
    questions[currentQuizQuestion] = formData;
    currentQuizQuestion++;
}

function saveQuiz()
{
    var quizData = new FormData(document.getElementById("inputQuizForm"));
    $.ajax({
        type: "POST",
        url: "create",
        data:
        {
            quiz: quizData,
            questions: questions
        },
        processData: false,
        contentType: false
    });
}
CakePHP

public function create()
{
    if($this->request->is("post"))
    {
        $quiz = $this->request->data["quiz"];
        $questions = $this->request->data["questions"];
        ...
    }
}

您是否尝试过删除
processData:false
?这可能会导致不理想的结果,但还没有,因为我觉得删除该语句会导致jQuery尝试将formData对象转换为查询字符串,这会导致其他错误。我认为你在这一点上是正确的。另一个问题可能是你的url,是
create
你的PHP函数吗?是的,我知道这是有效的,因为我之前在更简单的命令上测试过它,并且因为该函数是引发错误的函数。奇怪的是,如果我只通过数据传递一个参数(
data:quizData
),那么它就可以正常工作。如果进行调试($\u POST),您会看到什么?在create中的if语句中执行此操作。