跨域的Javascript请求

跨域的Javascript请求,javascript,Javascript,我正在尝试跨域发出请求,如下所示: var script=document.createElement('script'); script.setAttribute('src',"http://www.example.com/wordpress/register/?callback=callbackF&ver=2.5&url="+encodeURIComponent(window.location.href)); script.setAttribute("

我正在尝试跨域发出请求,如下所示:

    var script=document.createElement('script');
    script.setAttribute('src',"http://www.example.com/wordpress/register/?callback=callbackF&ver=2.5&url="+encodeURIComponent(window.location.href));
    script.setAttribute("type", "text/javascript");
    script.setAttribute("id", "spark_grazit_script");
    document.getElementById("spark_static_widget").parentNode.appendChild(script);
随着脚本的创建,它将被附加到我拥有的div中,并且会有一个请求。在请求结束时:

   function callbackF(data){
            console.log('Response has finished'+data);
        }
该功能应在请求结束时触发。我只想调用回调函数

我没有得到跨域错误。但我得到了这个错误:

Uncaught SyntaxError: Unexpected token : 
有没有一种方法可以不借助html5或jsonp实现我想要的东西。我还能用ajax得到回复吗

更新: 响应是一个简单的json对象

以下是回应:

{ "userid":"24645", "token":"40A164ECA4DE4A4F", "script":"<script type='text/javascript'>var dbnwid=16211; var dbnpid=23113; var dbnwebid=19459; var dbnlayout=21; var dbncolor='#000000'; var dbntitlefontsize='14'; var dbnbgcolortype=1; var dbnheader='You might enjoy reading:'; var dbnremindercolor=2; var dbn_protocol = (('https:' == document.location.protocol) ? 'https://' : 'http://'); </script>"}
{“userid”:“24645”,“token”:“40A164ECA4DE4A4F”,“script”:“var dbnwid=16211;var dbnpid=23113;var dbnwebid=19459;var dbnlayout=21;var dbncolor=”#000000’;var dbntitlefontsize='14';var dbnbgcolortype=1;var dbnheader=”您可能喜欢阅读:”;var dbnremindercolor=2;var dbn(协议=('https:'=document.location.protocol)?'https://':'http://');“}
有没有一种方法可以不借助html5或jsonp实现我想要的东西。我还能用ajax得到回复吗

您没有使用ajax。您正在执行JSONP(或功能相同的东西)

来自
http://www.eya.com/wordpress/register/?callback=callbackF&ver=2.5&url=
必须是有效的脚本片段。从错误消息中,它不是。(当我尝试使用404页面时,得到的是一个无效的脚本。)


更新:您的响应是一个有效的JSON对象,但不是一个有效的JavaScript片段,因为开头的
{
对于解析器来说看起来像块的开头,而不是对象文本的开头,因为它不会出现在需要表达式的地方

要使其按照您描述的方式工作(它是JSONP),响应必须将该对象包装在对URL中命名的回调的调用中,如下所示:

callbackF({ "userid":"24645", "token":"40A164ECA4DE4A4F", "script":"<script type='text/javascript'>var dbnwid=16211; var dbnpid=23113; var dbnwebid=19459; var dbnlayout=21; var dbncolor='#000000'; var dbntitlefontsize='14'; var dbnbgcolortype=1; var dbnheader='You might enjoy reading:'; var dbnremindercolor=2; var dbn_protocol = (('https:' == document.location.protocol) ? 'https://' : 'http://'); </script>"})
callbackF({“userid”:“24645”,“token”:“40A164ECA4DE4A4F”,“script”:“var-dbnwid=16211;var-dbnpid=23113;var-dbnwebid=19459;var-dbnlayout=21;var-dbncolor='000000';var-dbntlefontsize='14';var-dbnbgcolortype=1;var-dbnheader='您可能喜欢阅读:';var-dbnremindercolor=2;var-dbn\u协议=('https:'=document.location.protocol)?'https://':'http://');“})

完整的响应是什么样子的?这是一种关键信息。这里发生了什么样的请求?我无法得到完整的响应。因为当src到达目的地时,它发现了一个错误。我认为它甚至没有得到里面的内容。响应是一个小json对象(这是有效的)答案更新..如果我能得到那个东西就好了somehow@BlackFire27:很好。我已经更新了我的答案,告诉你如何前进。是的。因为我不显示页面。尝试在一个简单的对象上测试链接,以便将响应字符串化?是否有一些onerror处理程序,我仍然可以将整个对象作为字符串获取也许?如果我得到一个字符串,它不会抛出一个错误吗?字符串会被传递到function@BlackFire27:不,我的意思正是我上面所说的:在函数调用中包装当前返回的内容(不要添加引号或任何内容)。更明确地说:Output
callbackF(
(或URL中的任何函数名,在当前发送回的内容之前后跟
),输出当前发送回的内容,然后在末尾添加
。同样,指向JSONP信息的链接应该会有所帮助。@BlackFire27:太好了!很高兴这有帮助,