使用ajax调用php函数时遇到问题

时间:2013-09-22 23:13:17

标签: javascript php jquery ajax

客户端(js)即时通讯

使用此脚本

    jQuery.ajax({
    type: "GET",
    url: "editold.php",
    data: "call=generateCode",
    success: function (response) {
        alert("Succesful getting php file");
    },
    error: function (response) {
         alert("Error getting php file");
    }
});
在使用此代码的服务器端(php)上

<?php 



if($_SERVER['REQUEST_METHOD']=="GET") {
echo '<script type="text/javascript">' . 'alert(" ' . 'hey' . '");' . '</script>'; 
$function = $_GET['call'];

    if(function_exists($function)) {        
        call_user_func($function);
    } 
    else {
        echo 'Function Not Exists!!';
    }
}

function generateCode() {
echo '<script type="text/javascript">' . 'alert(" ' . 'hey' . '");' . '</script>'; 
}
?>    

虽然我收到警报,说我的成功功能警报意味着文件 成功加载我似乎没有让最终的generatecode函数工作。(我没有得到第二个警报。)

我尝试过很多东西但似乎没什么用。

我该怎么做?..

2 个答案:

答案 0 :(得分:2)

这应该这样做:

jQuery.ajax({
    type: "GET",
    url: "editold.php",
    data: {call: "generateCode"}, // <-- This one is changed into an object
    success: function (response) {
        alert("Succesful getting php file");
        $('body').append(response); // <-- Append the ajax response to the page body
    },
    error: function (response) {
        alert("Error getting php file");
    }
});

如果没有,请尝试在PHP文件中执行var_dump($_GET);

答案 1 :(得分:0)

1 - 在服务器端发送没有脚本标记的响应。

2 - 在客户端使用eval()函数来执行代码。

if($_SERVER['REQUEST_METHOD']=="GET") {
echo 'alert(" ' . 'hey' . '");';
$function = $_GET['call'];

if(function_exists($function)) {        
    call_user_func($function);
} 
else {
    echo 'Function Not Exists!!';
}
}

function generateCode() {
//your code 
}


jQuery.ajax({
    type: "GET",
    url: "editold.php",
    data: "call=generateCode",
    success: function (response) {
        alert("Succesful getting php file");

        eval(response);
    },
    error: function (response) {
        alert("Error getting php file");
    }
});