2014-02-10 24 views
0

我想使用ajax()函数将JSON变量和整数发送到页面并追加检索到的数据。这是我在此刻:jQuery - 如何进行ajax POST调用并追加数据

$.ajax({ 
    type: "POST", 
    dataType: "json", 
    url: "get_theme.php", 
    data: {themestack:themes, iterator:theme_max_iterator}, 
    success: function(data){ 
     alert('Items added'); 
     $("#themes").append(data); 
     ++IFRAMES_IN_DOM; 
     ++theme_max_iterator; 
    }, 
    error: function(e){ 
     alert(e.message); 
    } 
}); 

themesJSON变量,theme_max_iteratorint。目前,我收到的只是"undefined"的提醒,所以我想知道什么是错的?

编辑:

在日志文件中,我可以看到从get_theme.php错误:

PHP Warning: json_decode() expects parameter 1 to be string, array given 

导致这种结果是该行:

$obj = $_POST['themestack']; 
$json_data = json_decode($obj, true); 

因为JSON这是奇怪的变量themestackJSON

+0

它可能会去错误的功能。所以你的'get_theme.php'返回一个错误 – anurupr

+0

检查你的get_theme.php是否发送了正确的响应。 – Abhidev

回答

0

我觉得你越来越在json_decode()array尝试encode json第一则decode像,

$obj = $_POST['themestack']; 
if(is_array($obj)){// check if obj is an array then encode it first 
    $obj = json_encode($obj); 
} 
$json_data = json_decode($obj, true); 

或者通过你的data使其json像以前一样,

data: {themestack:JSON.stringify(themes), iterator:theme_max_iterator}, 
0

它看起来像你在你的错误中发出警报:回调......我建议看看请求/响应以查看服务器返回的内容。

或者,您可以将alert(e.message)更改为alert(JSON.stringify(e))以了解它告诉您的内容。但提到的第一件事可能比这个后面的更具信息性,更接近这个问题。

0

如果你的AJAX期待JSON数据,你必须呼应使用“json_encode”在该php

<?php 
    $result = "blah blah" 
    echo json_encode($result); 
    ?> 
0

我认为你的themes是一个数组。所以,当你在PHP中使用$_POST['themestack']时,你有一个数组。而jason_decode(...)函数需要一个JSON字符串作为参数。

也许你应该更改以下行:

data: {themestack:JSON.stringify(themes), iterator:theme_max_iterator}, 

或者,也许你并不需要jason_decode()和$_POST['themestack']对象你想要什么。你可以把它看作一个数组,并像$_POST['themestack'][0]那样访问它。