Perhaps we need a JSONP callback that instead does `yourFunction(JSON.parse('{"JSON":"rocks!"}'))` (though, slightly more sophisticated, I hope).
That still won't work unless you escape the line endings. And you'll also need to escape single quotes.
You are mixing eval() with other stuff.
Re:JSON: The JavaScript subset that isn't
by threedaymonk on Monday May 16, 2011 @07:16AM
(#2552199)
Or, conversely, everyone here is confusing eval() with evaluation in general. JSONP does not call eval() as such, but it does evaluate the server response as JavaScript, because it ends up as:
<script src="/whatever?callback=foo"></script>
The source of which is something like foo({"a":"b"})
Therefore, the hash supplied to foo() must be valid JavaScript.
The user agent evals the JSONP response before anything else happens: the server might return the string 'yourCallback({"JSON":"rocks!"});', which gets evaled to a function invocation whose argument is whatever the string '{"JSON":"rocks!"}' evals to. If that string doesn't successfully eval (as per the OP), your JSONP is broken.