XDK html development --- Cross Domain Request
Two days ago, I came across a problem. After building a restful web service for my app. I happily tried to access the data from the web service using phone. I sent request for data from server using following code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 |
$.ajax({ type: ‘GET‘ , dataType: ‘json‘ , async : false , error : function
(xhr, ajaxOptions, thrownError) { alert(xhr.readyState); alert(xhr.status); alert(thrownError); }, success: function
(data) { alert(data); } }); } |
I used Intel XDK environment. emulator can return data. But when I test with real phone(both iphone and android) , xhr.status returned value 0. I started to search why this happened. Finally, I was aware of this cross domain request problem. Then start to search ‘phone gap cross domain request‘. Overall, they give two solutions:
- JSON response header has Access-Control-Allow-Origin set to allow access to the domain: this is not very common since it poses a security risk. More information here.
- JSON supports padding (JSONP): This is more commonly used by APIs to allow developers to access their data.
I tried both, but none of them work.
I started feeling bad and disappointed. I went through a hard time :( , But this time, I didn‘t give up. Kept searching, kept believing that every problem in engineering must get a corresponding solution for it. Answer is here:http://software.intel.com/en-us/html5/articles/how-to-access-JSON-data-in-HTML5-apps.
Adding following two tags in our file.
<script src="intelxdk.js"></script>
<script src="xhr.js"></script>
intelxdk.js and xhr.js actual files are not required,it will be included automatically in Intel XDK tools, just the script tags should be included.
Then I use the statement suggested from this site:
1
2
3 |
Amazingly, it did work!!!!!Cheers!!!!!
PS: XDK is really easy to use for beginners.
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。