2

guys i keep on getting this uncaught syntaxerror:unexpected token <, and it points to the jquery library file,i am making a request to AJAX(comment-insert-ajax.php) using JQuery(comment-insert.js),i try removing the closing token of php(?>) in the AJAX script but i still get the error.I actually get the error when i add the 'require_once' lines,sorry about that.

comment-insert-ajax.php

    <?php 

if(isset($_POST['task']) && $_POST['task'] == 'comment-insert')
{

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


    $std = new stdClass();
    $std->comment_id = 24;
    $std->userId = $userId;
    $std->comment = $comment;
    $std->userName = "Thabo Ambrose";
    $std->profile_img= "images/tbo.jpg";

    require_once $_SERVER['DOCUMENT_ROOT'] . 'defines.php';
   require_once MODELS_DIR . 'Comments.php'; 
    echo json_encode($std);


}
else
{
        header('location: /');

}

and following is the Jquery file that makes the request using the '$.post' method. comment-insert.js

$(document).ready(function(){

   $('#comment-post-btn').click(function(){

        comment_post_btn_click();

    });


});


function comment_post_btn_click()
{

        var _comment = $('#comment-post-text').val();
        var _userId = $('#user-id').val();
        var _userName = $('#user-name').val();

        if(_comment.length > 0 && _userId != null)
        {
            //proceed with ajax call back
            $.post("ajax/comment-insert-ajax.php",
            {
                    task : "comment-insert",
                    userId : _userId,
                    comment : _comment
            }

            ).error(

                    function()
                    {
                        console.log("Error : ");
                    }
            ).success(

                    function(data)
                    {
                        comment_insert(jQuery.parseJSON(data));
                        console.log("Response text : "+ data);
                    }
            );


            console.log(_comment + " "+_userName + " id of "+_userId);  
        }
        else
        {

                //do something

                $('#comment-post-text').addClass('alert alert-danger');
                $('#comment-post-text').focus(function(){$('#comment-post-text').removeClass('alert alert-danger');});
        }   

        //remove text in the text area after posting
        $('#comment-post-text').val("");
}

function comment_insert(data)
{
    var t = '';
    t += '<li class="comment-holder" id="_'+data.comment_id+'">';
    t += '<div class="user-img">';
    t += '<img src="'+data.profile_img+'" class="user-img-pic">';
    t += '</div>';
    t += '<div class="comment-body">';
    t += '<h3 class="username-field">'+data.userName+'</h3>';
    t += '<div class="comment-text">'+data.comment+'</div>';
    t += '</div>'; 
    t += '<div class="comment-buttons-holder">';
    t += '<ul>';
    t += '<li class="delete-btn">x</li>';
    t += '</ul>';
    t += '</div>';  
    t += '</li>';

    $('.comments-holder-ul').prepend(t);
}

The error points to line 7497 of the jQuery library,it point to the following code

    jQuery.parseJSON = function(data)
{
  return data;
}
10
  • What you get in data in success block? Commented Nov 24, 2015 at 7:32
  • I parse the data from the ajax response using the jquery.parse (data), buy since there is this error i get nothing Commented Nov 24, 2015 at 7:36
  • Will you comment comment_insert(jQuery.parseJSON(data)); and paste what you get in data? Commented Nov 24, 2015 at 7:37
  • try removing header('location: /'); in your else block and echo something else there and inspect the response with chrome Inspector or Firebug. Commented Nov 24, 2015 at 7:38
  • might be worth trying json_encode( $std, JSON_HEX_TAG ); Commented Nov 24, 2015 at 7:39

3 Answers 3

1

Try using the JSON.parse function:

//proceed with ajax call back
    $.post("ajax/comment-insert-ajax.php",
        {
            task : "comment-insert",
            userId : _userId,
            comment : _comment
        }

    ).error(

        function()
        {
            console.log("Error : ");
        }
    ).success(

        function(data)
        {
            comment_insert(JSON.parse(data));
            console.log("Response text : "+ data);
        }
    );


    console.log(_comment + " "+_userName + " id of "+_userId);
}
Sign up to request clarification or add additional context in comments.

1 Comment

JSON.parse() and jQuery.parseJSON do the same. stackoverflow.com/questions/10362277/…
0

try puting the data in a array and then encode it

$array = ['comment_id' => 24,'userId' => $userId,'comment' => $comment,'userName' => "Thabo Ambrose",'profile_img'= "images/tbo.jpg"];


echo json_encode($array);

Comments

-1

change if(isset($_POST['task']) && $_POST['task'] == 'comment-insert') this line of code to if(isset($_POST['task']) && isset($_POST['task'])&&$_POST['task']== 'comment-insert'). then change the ajax call to

    $.ajax({
                        url: "ajax/comment-insert-ajax.php",
                        data :{"task":"comment-insert","UserId":_userId,"comment":_comment},
                        type: "POST",       
                        dataType: "json",
    success:function(msg) { 
    }
});

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.