我怎么能用JS和AJAX发送一个数组

时间:2016-06-16 18:30:50

标签: javascript php jquery arrays ajax

我有多个输入字段,用户可以在其中填写问题的答案,使用JavaScript我将用户输入放入数组中。

当我在google chrome中查看控制台日志时,我看到数组将被设置为正确,之后我想将带有AJAX的数组发送到另一个php页面,以便我可以将数据保存到我的数据库中。

当我检查我的数据库时,发布结果="数组" :(

有人可以帮助我吗?

////// JavaScript和AJAX代码:

if (isConfirm) {
    checkAnswers();
    $('input[id="answer"]').each(function() {
        allAnswers.push($(this).val());
        allAnswers.toString(); 
    });
    console.log(allAnswers);
    $.ajax({
        type: 'post',
        url: 'actions/save_questions.php',
        data: { 'answers': allAnswers }
    });
}

/////// PHP代码:

<?php

$user_answer = $_POST['answers'];
$date = date('d-m-Y h:i:s');

$arr = array($user_answer);

$query = "INSERT INTO made_questions (lesson_id, user_answer, datum) VALUES ('1', '$arr', '$date')";
mysqli_query($conn,$query) or die (mysqli_error($conn));

?>

我的数据库的输出是:

id:27

lesson_id:1

user_answer:数组&lt; -----这是错的:(

datum:16-06-2016 08:12:32

控制台日志输出:

[&#34;马&#34;,&#34; nocleu&#34;,&#34; Geel&#34;,&#34;这是我的狗&#34;,&#34; Guten标签&# 34;,&#34; Sun&#34;,&#34; Aap&#34;,&#34; Honger&#34;,&#34; knol&#34;,&#34; Cat&#34;]

有人可以帮助我???

非常感谢!

3 个答案:

答案 0 :(得分:2)

.toString().join() 不会修改原始变量。你需要说:

allAnswers = allAnswers.toString();

OR

data: {'answers': allAnswers.toString()}

另外

如果您希望值“,”分开而不仅仅是“,”,这是.toString()返回的内容,您可以说:

allAnswers = allAnswers.join(", ");

OR

data: {'answers': allAnswers.join(", ");

重要的:

重要的是要注意,如果以这种方式使用.toString(),你的.each()循环将会中断。

$('input[id="answer"]').each(function(){
    allAnswers.push($(this).val());
    allAnswers = allAnswers.toString(); 
});

上面的代码不起作用因为在第一次迭代之后,allAnswers将是一个字符串,因此,调用.push()将引发异常,因为.push()不是函数string

固定

$('input[id="answer"]').each(function(){
    allAnswers.push($(this).val());  
});
allAnswers = allAnswers.toString();

此代码修复了此问题,方法是将数组转换为字符串,然后将值附加到数组。

答案 1 :(得分:1)

如果您希望以字符串格式保存所有问题,可以使用json_encode

<?php

    $user_answer = $_POST['answers'];
    $date = date('d-m-Y h:i:s');

    $ques = json_encode($user_answer);

    $query = "INSERT INTO made_questions (lesson_id, user_answer, datum) VALUES ('1', '$ques', '$date')";
        mysqli_query($conn,$query) or die (mysqli_error($conn));

?>

警告:您的代码不安全!

答案 2 :(得分:0)

在将数组连接到sql之前,应将数组转换为字符串。

$arr = implode(",", $user_answer);