如何使用javascript发布数据

时间:2018-02-24 13:40:50

标签: javascript post xmlhttprequest

这是我的JS代码:

$.when(d1, d2).done(function(v1, v2) {
    var url = v1;
    var xhr = new XMLHttpRequest();
    xhr.open("POST", url, true);
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
            console.log(url);
        }
    };
    xhr.send("deployment_preference_set_fleet_health_attributes_concurrent_hosts_percentage=31");
});

经过一定的处理后,我会得到一个会传递给v1的网址。

相应网址的HTML内容

<input id="deployment_preference_set_fleet_health_attributes_concurrent_hosts_percentage" max="100" min="0" name="deployment_preference_set[fleet_health_attributes][concurrent_hosts_percentage]" size="3" step="any" type="number" value="30.0" />
% or less of the hosts in the fleet can be deployed to at a time.

我想要的是使用特定值更新字段deployment_preference_set_fleet_health_attributes_concurrent_hosts_percentage

我尝试过使用xmlhttprequest,但它无效。

它正在使用console.log(v1),但我认为xhr.send()无效,因为我试图更新的页面没有得到更新

有关如何更新该特定字段数据的任何建议。

2 个答案:

答案 0 :(得分:0)

<强>问题

您的语法已关闭。我没有看到您将ajax请求的结果分配给您的目标DOM输入对象。

<强>建议

使用Jquery进行AJAX调用。如果您使用xhr,则需要在不同的浏览器中处理不同的格式,这可能是您问题的一部分。

<强>格式

$.ajax({
  type: "POST",
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

示例

$.post( "ajax/test.html", function( responseData ) {
  $( "#deployment_preference_set_fleet_health_attributes_concurrent_hosts_percentage" ).val( responseData );
});

参考 - &gt; https://api.jquery.com/jquery.post/

答案 1 :(得分:0)

您没有设置Content-Type标头。使用POST方法时,需要设置Content-Type标头(通过setRequestHeader对象的XMLHttpRequest方法),否则无法从另一端的请求正文中检索数据。

var xhr = new XMLHttpRequest(); //make xhr
xhr.open('POST', url, true);

xhr.setRequestHeader('Content-Type', 'x-www-form-urlencoded');// <-- do this!

xhr.send('my_data=hi&your_data=no');

在您的情况下,您需要做的就是在执行xhr.send()之前的某个时刻定义Content-Type标头。