不能调用函数php,ajax

时间:2014-10-09 10:25:43

标签: javascript php jquery ajax

我使用Ajax来访问我的comment_insert.php。在我的comment_insert.php中,我想调用位于另一个php文件(comments_pasta.php)中的公共静态函数。如果我调用该函数,我的程序会得到一个

  

“未捕获的SyntaxError:意外的令牌<”

如果我删除了通话,一切正常。我是ajax的新手。

function comment_post_btn_click(){

    var _comment = $('#comment-post-text').val();
    var _userId = $('#userId').val();
    var _userName = $('#userName').val();

    if(_comment.length > 0 && _userId != null){
        console.log(_comment + " " + _userName + " " +_userId);

        $.post("/ajax/comment_insert.php",
            {
                //we use this in the comment_insert.php(AJAX)
                task : "comment_insert",
                userId : _userId,
                comment : _comment
            }   

        ).success(
            function(data){
                //going to turn the Json from comment_insert.php(AJAX)into a javascript object
                comment_insert(jQuery.parseJSON(data));
                console.log("Response text = " + data);


<?php 

    session_start();

    if(isset($_POST['task']) && $_POST['task'] == 'comment_insert' ){

        require_once $_SERVER['DOCUMENT_ROOT'] . 'defines.php';

        $userId = (int)$_POST['userId'];
        $comment = addslashes(str_replace ("\n" , "<br>" , $_POST['comment']));

        $std = new stdClass();

        $std -> userId = $userId;
        $std -> comment = $comment;
        $std -> userName = $_SESSION['userName'];

        require_once ('comments_pasta.php');


        Talk:hej();



        echo json_encode($std);
    }

?>

<?php

class Talk{

    public static function hej(){
        console.log("HEJ");
    }
}
?>

3 个答案:

答案 0 :(得分:0)

实际情况是,意外的语法错误实际上是因为PHP引发了错误,并且格式错误报告包含类似<p> There was an error! </p>的内容,并且它在<上中断,这也恰好使您的{JSON失效1}}对脚本的响应。 console.log()是一个javascript函数。你不能在PHP中执行它。

您实际应该做的是echoreturn该变量并将其分配给您的对象。

public static function hej(){
   return "HEJ":
}

然后在你的PHP脚本中。

$std -> userName = $_SESSION['userName'];

require_once ('comments_pasta.php');

$std->HEJ = Talk:hej();

现在,您可以在console.log(data.HEJ)包装器的success功能中执行$.post()

此外,您正在执行comment_insert(jQuery.parseJSON(data));但是,您可以让jQuery通过添加$.post()作为调用的最终参数来自动解析'json'包装器中返回的数据,请注意:

$.post({ //object

}, 'json'); // <--final line closing $.post() wrapper

现在只是:

comment_insert(data);

这应解决它。

答案 1 :(得分:0)

试试这个ajax调用

function comment_post_btn_click()
    {


var _comment  = $('#comment-post-text').val();
var _userId   = $('#userId').val();
var _userName = $('#userName').val();


        var form_data   =   new FormData();                  

        form_data.append('_comment',_comment);
        form_data.append('_userId',_userId);
        form_data.append('_userName',_userName);


        $.ajax({
                // url          :   'userListAjax.php?r='+Math.random();,
                url         :   'userListAjax.php?r=',
                dataType    :   'text',
                cache       :   false,
                contentType :   false,
                processData :   false,
                data        :   form_data,                       
                // data: {params:[page,display]},                         
                type        :   'post',
                success     :   function(data){
                    // alert(data);
                    document.getElementById("dynamicContent").innerHTML=data;

            }
        });

    }

答案 2 :(得分:0)

没有任何作用..从comment_insert(jQuery.parseJSON(data))获取输出;我只需要删除函数的调用。如果我做一个console.log(&#34;响应文本=&#34; +数据);在使用函数调用的comment_insert之前,我得到了这个:

回复文字=
(!)注意:使用未定义的常量控制台 - 假设&#39; console&#39;在 7 的C:\ wamp \ www \ ajax \ comments_pasta.php中 调用堆栈 #TimeMemoryFunctionLocation 10.0000247944 {main}().. \ comment_insert.php 0 20.0120262616Talk :: hej().. \ comment_insert.php 20
(!)警告:log()期望参数1为double,在 7 上的C:\ wamp \ www \ ajax \ comments_pasta.php中给出字符串 调用堆栈 #TimeMemoryFunctionLocation 10.0000247944 {main}().. \ comment_insert.php 0 20.0120262616Talk :: hej().. \ comment_insert.php 20 30.0210263032http://www.php.net/function.log'目标=&#39; _new&#39;&GT;日志 ().. \ comments_pasta.php 7 {&#34; userId&#34;:1,&#34;评论&#34;:&#34;测试评论文字&#34;,&#34; userName&#34;:&#34; alex&#34;} < / p>

如果我删除了函数调用,我在console.log中得到了我想要的东西:

asdasd Alexander Lundh 1 comment_insert.js:18 响应文字= {&#34; userId&#34;:1,&#34;评论&#34;:&#34; asdasd&#34;,&#34; userName&#34;:&#34; alex&#34; }