来自 Google Apps 脚本的 getJSON 在 Safari 中不工作
getJSON from Google Apps Script not working in Safari
我已经创建了这段代码来处理我的用户登录。
var gasUrl = "https://script.google.com/macros/s/[my id]/exec";
function submitFormData() {
var username = $("#inputEmail").val();
var password = $("#inputPassword").val();
$.getJSON(gasUrl + "?username=" + username + "&password=" + password, function(data) {
if(data[0]) {
localStorage.setItem("username", data[0].username);
localStorage.setItem("id", data[0].id);
window.location.href = "/index.php";
}
else {
$(".reauwth-email").html("wrong");
}
});
}
在 Google Chrome 中一切正常,但是当我在 Safari 中尝试同样的事情时,我得到了一个错误。
[Error] Failed to load resource: the server responded with a status of 405 (Method Not Allowed) (echo, line 0)
[Error] Failed to load resource: Cannot make any requests from null. (echo, line 0)
[Error] XMLHttpRequest cannot load [url]. Cannot make any requests from null. (login.php, line 0)
我做错了什么?参数已填!
这可能是 Chrome 和 Safari 处理 XHR 的方式。 Apps 脚本不支持 CORS,因此您需要将 'callback=?' 参数添加到 $.getJson 以指示 JSONP。
gasUrl + "?username=" + username + "&password=" + password +"&callback=?"
然后在您的脚本中将 return 包装在回调参数中。
function doGet(e){
var callback = e.parameter.callback; // required for JSONP
.
.
.
return ContentService.createTextOutput(callback+'('+ JSON.stringify(returnObject)+')').setMimeType(ContentService.MimeType.JAVASCRIPT);
}
我已经创建了这段代码来处理我的用户登录。
var gasUrl = "https://script.google.com/macros/s/[my id]/exec";
function submitFormData() {
var username = $("#inputEmail").val();
var password = $("#inputPassword").val();
$.getJSON(gasUrl + "?username=" + username + "&password=" + password, function(data) {
if(data[0]) {
localStorage.setItem("username", data[0].username);
localStorage.setItem("id", data[0].id);
window.location.href = "/index.php";
}
else {
$(".reauwth-email").html("wrong");
}
});
}
在 Google Chrome 中一切正常,但是当我在 Safari 中尝试同样的事情时,我得到了一个错误。
[Error] Failed to load resource: the server responded with a status of 405 (Method Not Allowed) (echo, line 0)
[Error] Failed to load resource: Cannot make any requests from null. (echo, line 0)
[Error] XMLHttpRequest cannot load [url]. Cannot make any requests from null. (login.php, line 0)
我做错了什么?参数已填!
这可能是 Chrome 和 Safari 处理 XHR 的方式。 Apps 脚本不支持 CORS,因此您需要将 'callback=?' 参数添加到 $.getJson 以指示 JSONP。
gasUrl + "?username=" + username + "&password=" + password +"&callback=?"
然后在您的脚本中将 return 包装在回调参数中。
function doGet(e){
var callback = e.parameter.callback; // required for JSONP
.
.
.
return ContentService.createTextOutput(callback+'('+ JSON.stringify(returnObject)+')').setMimeType(ContentService.MimeType.JAVASCRIPT);
}