使用XMLHttpRequest发送PUT / DELETE数据

时间:2013-11-07 15:55:29

标签: javascript xml httprequest http-delete http-put

我使用Send POST data using XMLHttpRequest中的示例来创建此JavaScript代码:

function PostXML(webURL, post_data) {
    var objHTTP = new ActiveXObject("MSXML2.XMLHTTP");
    objHTTP.open("POST", webURL, false);
    objHTTP.setRequestHeader("Content-Type", "application/xml; charset=utf-8");
    objHTTP.setRequestHeader("Accept", "application/xml; charset=utf-8");
    objHTTP.setRequestHeader("Content-Length", post_data.length);
    objHTTP.send(post_data);

    while((objHTTP.readyState != 4) && (objHTTP.readyState != 'complete')) {
        Delay(100);
    }

    if(200 != objHTTP.Status) {
        Log.Message("Returned Status Code of: " + objHTTP.Status);
        Log.Message("Status Text: " + objHTTP.StatusText);
    }
    else {
        Log.Message("Returned Status Code of: " + objHTTP.Status);
    }

    return objHTTP.responseText;
}

我还需要PUTDELETE这些东西。如何将此代码转移到PUT,以及如何将此代码转移到DELETE

任何其他同样有用的例子也很好。

3 个答案:

答案 0 :(得分:18)

首先,您发布的代码非常糟糕,您不应该使用它。出于某些原因,请参阅我对您的问题的评论。

要使用PUT或DELETE而不是POST,只需将传递给objHTTP.open()的第一个参数更改为"PUT""DELETE"

答案 1 :(得分:4)

您想发送PUT或DELETE而不是POST吗?您是否尝试过更换" POST"在代码中使用" PUT"或"删除"? (它发布在您发布的代码的第3行)。

BTW - 这是如何从Javascript实现httprequests的一个非常糟糕的例子。

答案 2 :(得分:0)

您可以尝试以下代码:

更新用户

var url = "http://localhost:8080/api/v1/users";

var data = {};
data.firstname = "John2";
data.lastname  = "Snow2";
var json = JSON.stringify(data);

var xhr = new XMLHttpRequest();
xhr.open("PUT", url+'/12', true);
xhr.setRequestHeader('Content-type','application/json; charset=utf-8');
xhr.onload = function () {
    var users = JSON.parse(xhr.responseText);
    if (xhr.readyState == 4 && xhr.status == "200") {
        console.table(users);
    } else {
        console.error(users);
    }
}
xhr.send(json);

删除用户

var url = "http://localhost:8080/api/v1/users";
var xhr = new XMLHttpRequest();

xhr.open("DELETE", url+'/12', true);
xhr.onload = function () {
    var users = JSON.parse(xhr.responseText);
    if (xhr.readyState == 4 && xhr.status == "200") {
        console.table(users);
    } else {
        console.error(users);
    }
}
xhr.send(null);