2012-11-13 106 views
1

我简单试图从http://bootcamp.jit.su/welcome/marian问题跨域AJAX

这里得到的消息是我使用

<!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> 

看来,它应该正常工作的代码,但我不断收到在控制台中的错误消息:“意外”:“字符”

+1

”var data = {message:'message'}; data“似乎不必要,请尝试删除它并查看是否仍然出现错误。 –

+0

响应不是jsonp –

+0

var数据不会做任何事情lol只是忽略它 – Paranoid42

回答

1

事情是JSONP不是一个实际的AJAX请求。这是一个解决方法来欺骗浏览器,它通过向头文件插入脚本标记来工作。想想吧,这是你的JSONP支持URL

domain.com/jsonp.aspx?callback= processJSONP

的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支持T的数据。

为了达到你想要的效果,你必须使用服务器端脚本(例如ASP.Net,PHP等),并通过服务器端对象(WebRequest,HttpRequest)请求内容,当你得到它时,你可以使用它作为JSONP或标准的AJAX请求,因为它现在在你自己的域中。

希望这可以清除一切。 “