2013-11-07 3 views
-3

я использовал пример из Send POST data using XMLHttpRequest, чтобы создать этот код JavaScript:Отправка PUT/DELETE данные с XMLHttpRequest

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; 
} 

мне также нужно PUT и DELETE вещи. Как передать этот код, чтобы он мог PUT, и как мне передать этот код, чтобы иметь возможность DELETE?

Любые другие примеры, которые работают одинаково, тоже прекрасны.

+10

'var objHTTP = new ActiveXObject (" MSXML2.XMLHTTP ");' - ПОЧЕМУ вы используете метод oldIE, а не стандартизованный объект XMLHttpRequest, который поддерживает несколько несколько недавних браузеров? А как насчет этого ужасного активного ожидания вместо использования обратного вызова 'onreadystatechange'? – ThiefMaster

+1

Имеет -5 upvotes и более 15k просмотров. – Sorter

+0

Я думаю, что здесь, по крайней мере, теги должны ясно указывать, что это вопрос только для IE. – peterh

ответ

17

Прежде всего, код, который вы отправили, ужасен, и вы не должны его использовать. См. Мой комментарий по вашему вопросу по некоторым причинам.

Чтобы использовать PUT или DELETE вместо POST, просто измените первый аргумент, который вы передаете на objHTTP.open(), на "PUT" или "DELETE".

+2

Извините за сообщение ужасного кода. Я только начал писать javascript для целей автоматизации тестирования 2 месяца назад. Перед этим нет опыта кодирования/сценариев. Если бы вы могли дать мне полный пример того, как это должно быть, я могу учиться на этом. Замена действительно работает, спасибо! Я ошибался в том, что я заменил «post_data» на «put_data». Спасибо за вашу помощь! – tampie

+1

Первый ответ в вопросе, который вы уже связали, - это хорошее начало ... http://stackoverflow.com/a/9713078/298479 Кроме того, пожалуйста, не используйте Internet Explorer во время разработки, кроме тестирования, если там работает материал , слишком. – ThiefMaster

+0

Это не ужасная ИМО. По крайней мере, он правильно отступил. Я видел хуже. но у ThiefMaster есть точка. Почему бы не сделать это «надлежащим образом»? Я не вижу никакой причины. – Rolf

4

Вы хотите отправить PUT или DELETE вместо POST? Вы пытались заменить «POST» в коде «PUT» или «DELETE»? (он находится на третьей строке кода, который вы опубликовали).

BTW - это очень плохой пример того, как реализовать http-запросы от Javascript.

+3

Спасибо! Оно работает! См. Мой предыдущий комментарий. Я просто очень новичок в JavaScript и использовал пример из Интернета и адаптировал его. Любые полные примеры того, как это должно быть реализовано, очень приветствуются! – tampie

Смежные вопросы