2013-08-03 107 views
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); 

?> 

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

成功:空

完成:[对象的对象]

而我什么也没有在DB ...

任何人都可以点我在正确的方向?我究竟做错了什么?

+0

'$ temp'是一个数组,不是吗?我不知道你是如何试图将数组插入数据库? – Ravish

回答

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']); 
+0

Hm responseText在控制台显示“null”...也许错误的PHP ? – Conjak

1

你为什么要在$.ajax打电话JSON.stringify(mix)

你可以把对象/数组或它在那里!

这里有一个固定的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是一个数组 - 你必须建立它的查询,而不是仅仅把它放在那里,希望它会奇迹般地工作。它不会。

+0

好吧,thanx ...这主要是为了测试...控制台日志仍然显示“null”responseText,将通过PHP ... – Conjak

1

基于$就文档:

数据选项可以包含以下形式的查询字符串 键1 =值&键2 =值,或窗体的对象{key1:'value1', key2:'value2'}。

只需跳过stringify并将其传递到数据字段中即可。

+0

试过没有stringify但只有得到parsererrors,反正,现在它的工作.. thx .. – Conjak

0

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

+0

控制台显示没有错误只是很多的对象属性... – Conjak

0

如果你想看到你的对象,而使用

console.log(data); 

这将是谷歌Chrome浏览器的控制台更好的可读性。

+0

我使用铬控制台调试... responseText显示空。 .. – Conjak