当使用JSON加载时,php将数据加载到fancybox中

时间:2012-04-29 01:31:45

标签: php jquery json fancybox

我有一个带有fancybox的php页面。 我在php中有一个页面,jquery显示了一个fancybox。 当显示fancybox时,我需要从数据库加载数据。 点击事件的代码:

$("a#addActivitat").click(function(){
            var retorn;
            $.getJSON('aplicacio/agendaLoadData.php?action=loadIdAct',function(data){
                retorn = data;
            });
            alert(retorn);  
        });

警报未定义

fancybox的代码:

<div id="agendaAddAct">
        <form method="post" action="" target="workFrame" id="actionform">
            <p>
                <input type="text" name="idRel" id="idRel"/>
            </p>
            <input type="button" value="Afegir activitat" class="btnsubmit" id="afegirActivitat"/>
        </form>
    </div> 

我需要将php调用返回的值加载到idRel输入中。 以及使用JSON调用的agendaLoadData的代码:

$var = new facanabbdd();
echo json_encode($var->getMaxValueRel());

3 个答案:

答案 0 :(得分:0)

您没有正确使用$.getJSON。请记住,Ajax请求是异步的(Ajax确实意味着异步JavaScript和XML)。 因此,您的retorn变量不会被从Ajax调用中获取的值填充。

您应该做的是在收到数据时更新您的DOM(即在您的回调函数中)

$("a#addActivitat").click(function(){
    $.getJSON('aplicacio/agendaLoadData.php?action=loadIdAct', function(data){
        $('#idRel').val(data.value);
    });
});

如果您返回的JSON文档类似于

{
    "value": 42
}

答案 1 :(得分:0)

如果您将警报放在成功处理程序中,它将提醒数据,如果从服务器返回数据。试试这样:

$("a#addActivitat").click(function(){
    $.getJSON('aplicacio/agendaLoadData.php?action=loadIdAct',function(data){
         $("#idRel").val(data);
         var retorn = $.parseJSON( data );
         alert(retorn);
    });
});

答案 2 :(得分:0)

我发现了错误:

php页面代码:

$("a#addActivitat").click(function(){
            $.getJSON('aplicacio/agendaLoadData.php?action=loadIdAct',
                       function(data){
                $('#idRel').val(data);
            });     
        });

AgendaLoadData的代码

echo json_decode("43");

错误是我调用函数json_encode,我需要调用函数json_decode。