JQuery到PHP函数并返回Ajaxed

时间:2010-06-17 13:11:58

标签: php jquery ajax

我有一组php函数,我想调用不同的事件,主要是用jquery async(ajax)onclick。 第一个函数在加载时被调用

$(document).ready(function()
{
  $("#div2").hide('slow');
  $("#div1").empty().html('<img src="ajax-loader.gif" />');
  $.ajax(
{
    type: "POST",
    url: "WebFunctions.php",
    data: {'func':'1'},
    success: function(html)
    {
      $("#div1").show('slow').html(html)
    }
});

数据:{'func':'1'} - &gt;是php端的switch语句

switch($_POST['func'])
{
  case '1':
    getParents();
    break;
  case '2':
    getChilds(params);
    break;
  case '3':
    getChildObjects(params);
    break;
  default:
}

“此功能是对soap服务器的调用”&lt; - 无关。

因此,当该函数完成时,我得到一个包含ID和名称的数组。我回应了名字,但我想要ID作为参考,所以当我点击回显的名字时,我可以调用另一个带有参数名称ID的php函数...

如何摆脱switch语句?我如何调用正确的PHP函数并将params传递给它?如何保存此ID,以便当我点击具有该ID的项目时,将调用其他php函数??

Plz随时提出任何问题,欢迎任何答案:)

``````````````````````````````EDIT```````````````` ``````````````````````````

$(document).ready(function()
    {
        $("#div2").hide('slow');
        $("#div1").empty().html('<img src="ajax-loader.gif" />');
        $.ajax(
        {
            type: 'post',
            async: true,
            url: "Parents.php",
            data: {'id' : 12200},
            dataType: "json",
            cache: false,
            success: function(json_data)
            {
                $("#div1").empty();
                $.each(json_data, function(key, value)
                {
                    $("#div1").append('<p class="node"><b>['+key+']</b> => '+value+'</p>');
                    $(this).data('id', key);
                });
            }
        });
        $("p.node").click(function()
        {
            var id = $(this).data('id');
            alert('The ID is: ' + id);
        });
    });

我让json通信工作但我的问题是数据的东西, 当我点击一个节点时,id是未定义的...它被打印但是当我点击它时oupsss ..所以问题是如何正确地将ID附加到每个相应的

..

2 个答案:

答案 0 :(得分:1)

您可以通过使用将请求路由到正确函数的MVC框架来避免switch语句。例如,使用CodeIgniter REST Server,您的函数可能包含以下URL:

然后,您可以将参数与每个AJAX请求一起发布。

您可能还希望返回作为响应的一部分传递的ID,因此当您请求下一个函数时它将可用。

答案 1 :(得分:0)

管理您ID的一个解决方案是将您的数据编码为JSON。这将允许您将整个PHP数组传递给Javascript,并让它本地理解并读取ID和名称。

要将PHP数组编码为JSON,请尝试以下操作:

echo json_encode($my_array);

(你需要PHP 5.2+才能工作)

这将在请求页面时打印出JSON数据。接下来,在JavaScript中为Ajax函数调用添加“dataType”参数。像这样:

// Get JSON Data and Save
$.ajax({
    type: "POST",
    url: "WebFunctions.php",
    data: {'func':'1'},
    dataType: "json",
    success: function(json_data)    {
        $("#div1").data(json_data);
    }
});

// Display the ID when clicked
$("#div1").click(function(){    
    var id = $(this).data('id');
    alert('The ID is: ' + id);
});

这告诉Ajax函数期待JSON回来。

当调用success函数时,您可以访问“json_data”变量并查找所有ID和名称,就像在PHP中一样。然后,您需要编写一些代码来适当地保存这些ID和名称。然后可以在以后使用它们(即,当您单击按钮等时)。

编辑:我已经更新了上面的代码。 JSON数据现在与HTML元素“#div1”相关联,因此您可以在将来再参考它。我还添加了一个简单的点击事件。只要点击元素,就会显示它的ID。