我有一组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附加到每个相应的
..
答案 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。