【发布时间】:2012-11-06 11:59:40
【问题描述】:
我已经研究这个问题很长一段时间了,但似乎无法弄清楚为什么我在调用 $.ajax 函数后一直收到 null。我输入了一个包含我的方法名称的关联数组,然后调用我的方法在 PHP 中将 aj 子字符串返回到前端。当我在我的 java 脚本中调用 alert 时收到 null 。这是我的代码
Java 脚本:
$(document).ready(function()
{
var data = {};
data["Method"] = "test";
$.ajax({
url:"test.php/test",
data: data,
type:"POST",
contentType:"application/json",
dataType:"json",
success: function(data){
alert(data);
},
error:function(data, textStatus, error)
{
}
});
});
PHP:
<?
//require_once("database.php");
class methods
{
function __contructor()
{
if(isset($_POST["Method"]))
{
$function = $_POST["Method"];
call_user_func($function);
}
else
{
echo "{\"status\":\"false\"}";
}
}
function test()
{
$json = array(
"kyle" => "broflowksi",
"eric" => "cartman",
"stan" => "marsh"
);
echo json_encode($json);
}
}
$method = new methods();
?>
【问题讨论】:
-
顺便说一句,您可以一步创建您的
data对象:var data = { Method : "test" };- 甚至可以使用data : { Method : "test" }将该对象直接包含在Ajax 调用中。 -
我真的不喜欢来自未过滤的
$_POST值的 call_user_func() 过程。就我个人而言,我要么列出允许的函数,要么列出要调用的匿名函数的哈希表。在当前状态下,您很容易受到攻击,尤其是如果您还允许用户传递参数。 -
我们可以看看你的 mod_rewrite 吗?
标签: php javascript ajax post