我正在开发一个看似基本的移动应用程序(第一个)。但我想让应用程序能够从我们的"头部"服务器请求信息。确保它有最新的信息。
我目前正在运行这样一个jQuery脚本。
$.ajax({
url: 'http://www.domain.com/list.php',
dataType: 'json',
crossDomain: true,
success: function(data) {
// Remove all content first
$(contentId +' li').remove();
// Load Data
$.each(data.items, function(index, list){
$(contentId).append('<li><a href="details.html?id=' + list.homeId + '" >' + list.name + '</a></li>n');
});
// Reload View
$(contentId).listview('refresh');
},
error: function(jqXHR, textStatus, errorThrown) {
console.log('Error: '+ jqXHR + textStatus + errorThrown);
}
});
实际上,在LIST.PHP文件上,它确实返回了一个JSON字符串。但我为安全所做的是将其添加为标题
header("Access-Control-Allow-Origin: *");
或者我可以将*更改为域/url以增加更好的安全性。但是,如果我不在它们中添加header()代码,我的javascript就会中断,无法正常运行。
我想我真正想知道的是,我这样做正确吗?或者有更好的方法吗?我已经尝试过JSONP,但我似乎无法将其用于跨域。
我的解决方案是否合理?还是胡说八道?任何想法或指导都将不胜感激!
我认为您应该研究JSONP
。没那么难。在客户端,jQuery已经开箱即用地处理了它,只需在URL上附加一个?callback=?
即可。在服务器上,而不仅仅是用JSON响应,例如:
{
"foo": "bar"
}
查找查询参数callback
,如果它存在,则将JSON输出封装在一个函数调用中,名称是回调参数的值,因此,对于callback=foo
:
foo({
"foo": "bar"
})
使用JSONP进行响应时,发送Content-Type: text/javascript
。这应该在不设置Access-Control-Allow-Origin
或类似内容的情况下工作。