在AJAX JSON POST请求中使用全局变量值

问题描述:

我试图做一个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

从它听起来好像你要选择的元素#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