2017-09-16 115 views
2

我試圖做一個AJAX調用來發布一些JSON到我的Elasticsearch實例。無論如何,我可以在'數據'請求中使用全局變量值嗎?在AJAX JSON POST請求中使用全局變量值

像下面這樣的東西?

$(document).ready(function() { 
    $('#Log-submit').on('click', function(e) { 
    e.preventDefault(); 
    var btn = $(e.target); 
     btn.attr("disabled", "disabled"); // disable button 
    $.ajax({ 
     data: JSON.stringify({"name" : "#div.Name"}), //use global variable value in JSON POST request 
     dataType: 'json', 
     processData: false, 
     type: 'POST', 
     contentType: "application/json; charset=utf-8", 
     url: 'http://my-API.com:9200/escalations/' 
    }); 
    }); 
}); 
+1

你當然可以在AJAX請求中使用全局變量 - 除非你的代碼沒有這樣做。你只是發送'#div.Name'字符串文字。您是否嘗試發送該元素的文本或某個屬性?另外,如果這是跨域請求,請確保其他域返回CORS標頭。 –

+0

$('#div.Name')。val() - 這是否工作? –

+1

我有一個值取自「#div.Name」說它的'約翰史密斯'我想發送POST請求,如下更新我的ES索引。 「name」:「John Smith」 – Putters

回答

1

從它聽起來好像你要選擇的元素#div.Name然後發送值(假設它是一個<input />元素)在AJAX請求的評論你的描述。請注意,這是與全局變量不同的邏輯,但仍然很容易實現。

要你需要什麼,你需要選擇要素,然後得到它的val(),就像這樣:

$.ajax({ 
    data: { name: $('#div.Name').val() }, 
    dataType: 'json', 
    type: 'POST', 
    contentType: "application/json; charset=utf-8", 
    url: 'http://my-API.com:9200/escalations/' 
}); 

另外請注意,我刪除processData因爲它設置爲false被這意味着你需要編碼的JSON手動,這是jQuery將爲你做的冗餘,給出正確的contentType