0

EDIT:

I got the mistake but no solution. It seems that 'isEditable', 'isOnline' and 'isRecycled' are not sent as booleans but as strings. Therefore my Validaton did not pass and the Error-Response was not valid JSON.

But why does the .save() call sents the booleans as string?


Original Post

Can anyone tell me why following function throws

SyntaxError: Unexpected token '

at Object.parse (native)

at fromJson (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.14/angular.js:1072:14)

As my postData is logged correctly, I think there is a mistake in my resource-save. On the server side I have a simple selfmade php-framework made using Symfony2 components and the $save call of the resource adds a new row in my database and returns this row as a JSON object.

        $scope.createStructure = function($event, createdStructure){
        $event.preventDefault();
        if(createdStructure.copy != null){
            copyId = createdStructure.copy.id;
        } else {
            copyId = 0;
        }
        postData = {
            'title': createdStructure.title,
            'id': copyId,
            'isEditable': false,
            'isOnline': false,
            'isRecycled': false
        }
        console.log(postData);
        Structure.save({}, postData, function(response){
            console.log(response);
            console.log(newStructure);
        });
    }
Community
  • 1
  • 1
  • Are there by chance single quotes in `createdStructure.title`? Can you provide example out of the `console.log(postData);` line? Try adding a breakpoint at line 1072 of anugular.js and examine what is being passed into `fromJson`. – TrazeK Aug 05 '14 at 14:16
  • `Object {title: "dgfgdfg", id: 0, isEditable: false, isOnline: false, isRecycled: false}` – Rathes Sachchithananthan Aug 05 '14 at 14:18

1 Answers1

0

PHP can't tell what data type is being passed in. The POST data is seen as a string. Check this previous answer out. I believe it covers the issue you are having.

PHP also has FILTER_VALIDATE_BOOLEAN, which is also covered in the answer I linked. I think it'll help you.

For example:

$isEditable= filter_var ($_POST['isEditable'], FILTER_VALIDATE_BOOLEAN);

That should make $isEditable a boolean.

Community
  • 1
  • 1
TrazeK
  • 838
  • 1
  • 8
  • 18