0

嗨,我正在尝试使用 jquery ajax 来解决这个问题,但不知道我是否做得正确......真的尝试了一切,基本上不得不查看 jquery.ajax 的傻瓜,但仍然没有让它工作......

function addMix(mix) {
    alert(mix);//Here I get my array of int's
    var myArr = JSON.stringify(mix);
    $.ajax({
        type:"POST",
        dataType: "json",
        url: "add.php",
        data: myArr,
        success: function(data) {
            alert("Success: " + data);
            console.log(data);
        },
        error: function(x,y,z){
            alert("Error: " + x + ", " + y + ", " + z);
            console.log(x, y, z);
        },
        complete: function(data){
            alert("Complete: " + data);
            console.log(data);
        }
    });
 }

php:

<?php
header('Content-Type: application/json');
include "con.php";

$mix = json_decode($_POST);

foreach($mix as $index => $val){
$temp = array();

foreach($temp[$index] as $key => $value){
        array_push($temp, $value);
    }
}

$sql = "INSERT INTO mg_test(value)
    VALUES('$temp')";

mysql_query($sql);

echo json_encode($temp);

mysql_close($con);

?>

我唯一得到的回报是,警报(混合)= 2,1,3,2

成功:空

完成:[对象对象]

我在数据库中什么也没有......

谁能指出我正确的方向?我究竟做错了什么?

4

5 回答 5

1

你为什么JSON.stringify(mix)$.ajax通话中这样做?

您可以只放置对象/数组或它所在的位置!

这是一个固定的JS:

function addMix(mix) {

    $.ajax({
        type:"POST",
        dataType: "json",
        url: "add.php",
        data: { mix: mix }, // <--- this
        success: function(data) {
            alert("Success: " + data);
            console.log(data);

        ...
    });
}

而在PHP中,您必须使用

$mix = json_decode($_POST['mix']);

代替:

$mix = json_decode($_POST);

另外,我很确定这个查询不起作用:

$sql = "INSERT INTO mg_test(value) VALUES('$temp')";

$temp是一个数组 - 您必须构建它的查询,而不仅仅是把它放在那里并希望它会神奇地工作。它不会。

于 2013-08-03T10:47:05.367 回答
1

基于 $.ajax 文档:

data 选项可以包含 key1=value1&key2=value2 形式的查询字符串,或 {key1: 'value1', key2: 'value2'} 形式的对象。

只需跳过字符串化并在数据字段中传递对象。

于 2013-08-03T11:02:55.400 回答
0

您错误地将数据发送到 ajax 调用。不要使用 JSON.stringify(),而是像这样发送请求参数。

type:"POST",
dataType: "json",
url: "add.php",
data: { "requestData": mix },
success:function(data){
  console.log(data);
}

在 PHP 文件中。得到这个

$mix = json_decode($_POST['requestData']);
于 2013-08-03T10:54:45.130 回答
0

不要提醒对象alert("Complete: " + data);它(如您所见)返回[Object Object]。那怎么console.log(data);说呢?

于 2013-08-03T11:10:20.587 回答
0

如果您想在使用时查看对象

console.log(data);

在 Google chrome 控制台中会更好地阅读。

于 2013-08-03T12:11:08.330 回答