嗨我想用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
成功:null
完成:[object Object]
我在DB中什么都没得到......
有人能指出我正确的方向吗?我做错了什么?
答案 0 :(得分: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
是一个数组 - 您必须构建它的查询,而不是仅仅把它放在那里并希望它会神奇地工作。它不会。
答案 1 :(得分:1)
基于$ .ajax文档:
data选项可以包含表单的查询字符串 key1 = value1&amp; key2 = value2,或{key1:'value1'形式的对象, key2:'value2'}。
只需跳过stringify并在数据字段中传递对象。
答案 2 :(得分:0)
您正在错误地向ajax调用发送数据。 Donot使用JSON.stringify(),而不是像这样发送请求参数。
type:"POST",
dataType: "json",
url: "add.php",
data: { "requestData": mix },
success:function(data){
console.log(data);
}
在PHP文件中。得到这个
$mix = json_decode($_POST['requestData']);
答案 3 :(得分:0)
不要警告对象alert("Complete: " + data);
它(如你所见)返回[Object Object]。什么说console.log(data);
?
答案 4 :(得分:0)
如果您想在使用
时看到您的对象console.log(data);
在Google Chrome控制台中,它的可读性会更好。