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