views:

2675

answers:

2

I am getting a javascript (prototype.js) error: Unexpected token ILLEGAL at this line of code:

newFriend = new friend(
    response[0].@items[0]._id, 
    response[0].@items[0]._nickName, 
    response[0].@items[0]._profilePicture, 
    response[0].@items[0]._tagLine, 
    response[0].@items[0]._isInvite, 
    response[0].@items[0]._confirm
);

the response object looks like this:

[{"@type":"[Lcom.photoviewer.common.model.ThinUser;","@items":[{"_id":"000.060318.05022007.00263.0067ur","_nickName":"siraj","_country":null,"_currentStorageLimit":5000000000,"_currentStorage":0,"_currentFileCount":0,"_profilePicture":null,"_tagLine":null,"_membershipLevel":0,"_isRejected":false,"_isInvite":false,"_confirm":false,"_verifiedOn":1170716666000}]}]

This is only happening in the Google Chrome browser and possibly other webkit browsers. It works fine in Firefox.

+3  A: 

Try this instead:

newFriend = new friend(
    response[0]["@items"][0]._id, 
    response[0]["@items"][0]._nickName, 
    response[0]["@items"][0]._profilePicture, 
    response[0]["@items"][0]._tagLine, 
    response[0]["@items"][0]._isInvite, 
    response[0]["@items"][0]._confirm
);

I'm pretty sure @ is giving you a problem.

For weird characters it's always safer to use the ["@items"] notation instead of the (dot) notation .@items.

Luca Matteis
A: 

Property names containing @ and dot notation are incompatible in Chrome. Use square bracket notation instead (you already do when you construct the object).

David Dorward
Wow, I'm surprised it works anywhere at all! `@` is very definitely not allowed in a JS identifier (according to ECMA-262-3 et al).
bobince