我试图将onload GET
方法调用中的参数传递给POST
方法。 GET
方法正在加载window.onload
,POST
函数不在onload调用中,否则POST
函数将在窗口加载后触发。我只想在单击按钮时触发POST
功能。
如何将变量从onload AJAX调用传递给我的POST
函数?
我能想到的唯一方法就是使用global
变量,但我并不认为这是将其传递给其他函数的好方法。
window.onload = function () {
function firstCallBack() {
$.get('http://website.com/API/docs/v1').then(function(data1){
var passThis = "PassMeToPOST"
}).then(function (data2) {
})
}
}
POST功能
function saveSettings(passThatVar) {
var urlVal = window.__env.url+ "Preview/TypeDefinition";
var xslSettingVal = $('#PreviewXml').val().replace(/\n/g, "");
var allData = {
'ObjectName': passThatVar,
'DisplayDefinition': setting,
}
$.ajax({
url: urlVal,
type: "POST",
data: JSON.stringify(allData),
success: function (data) {
console.log('success');
}
});
}
按钮HTML:
<button onclick="saveSetting()"> Save Setting </button>
答案 0 :(得分:2)
试试这个:
您的按钮:
<button id="save-settings"> Save Setting </button>
收到请求后,请将数据属性设置为按钮:
function firstCallBack() {
$.get('http://website.com/API/docs/v1').then(function(data1){
$("#save-settings").data("passMe", "PassMeToPOST");
}).then(function (data2) {
})
}
绑定点击事件(这是使用内联事件的最佳做法):
$("#save-settings").on("click", saveSetting);
在saveSetting()
功能上:
function saveSetting() {
var allData = {
'ObjectName': $(this).data("passMe"),
'DisplayDefinition': setting,
}
//... your post request
}
您还可以在启动发布请求之前检查get请求是否已完成(以避免在极端情况下出现错误):
if (!$(this).data("passMe")) {
return;
}
答案 1 :(得分:-2)
您基本上都在询问如何将变量保留在全局范围之外。这称为封装。这是一种很好的直觉,但却是一个很大的话题。以下是我喜欢的帖子:http://javascriptissexy.com/oop-in-javascript-what-you-need-to-know/
这样做的一种低预算方法是为您的值创建一个全局变量,而不是为自己使用全局命名空间。
var MyUniquelyNamedThing = {};
...
// get response:
MyUniquelyNamedThing.ThatValueINeed = data;
...
// posting:
data = { val1: MyUniquelyNamedThing.ThatValueINeed , etc. };