我很简单,试图从http://bootcamp.jit.su/welcome/marian获取消息
这是我正在使用的代码
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<meta charset="utf-8" />
<title>Globant :: Welcome to the HTML5 bootcamp</title>
</head>
<body>
</body>
<script type="text/javascript">
$(document).ready(function(){
var URL = "http://bootcamp.jit.su/Welcome/marian?callback=?";
var request = jQuery.noConflict().ajax({
url: URL,
type: "GET",
dataType: 'jsonp',
processData: false,
success: function(data) {alert('hola') ;}
});
});
</script>
</html>
似乎应该可以正常工作,但是我在控制台中不断收到错误消息:“意外的':'字符”
最佳答案
问题是JSONP不是实际的AJAX请求。这是一种欺骗浏览器的解决方法,它可以通过在 header 中插入脚本标签来起作用。认为,这是您的JSONP支持的URL
processJSONP是您页面中已经具有的函数,并且请求返回与此类似的脚本
processJSONP( {
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
});
它使用所需的数据来调用函数,并且您可以做任何想做的事情。当然,数据不必是JSON对象,否则您可以获取更多回调,例如
processJSONP("data1=11");
processJSONP("data2=22");
processJSONP("data3=33");
因此,如果URL不支持,您将无法获取所需的数据。
为了在这里实现您想要的功能,您必须使用服务器端脚本(例如ASP.Net,PHP等)并通过服务器端对象(WebRequest,HttpRequest)请求内容,当您获得它时,就可以将其用作JSONP或标准AJAX请求,因为它现在位于您自己的域中。
希望这能清除一切。
关于jquery - 跨域ajax的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13358057/