Как отправить положенный запрос с данными в виде элемента XML, из JavaScript? - PullRequest
1 голос
/ 12 января 2011

Мои данные - это элемент xml, и я хочу отправить запрос PUT с помощью JavaScript. Как мне это сделать?

Для справки: Обновление ячейки

РЕДАКТИРОВАТЬ: Согласно предложению Фредрика, я сделал это:

<form id="submitForm" method="PUT" enctype="application/atom+xml" action="https://spreadsheets.google.com/feeds/cells/0Aq69FHX3TV4ndDBDVFFETUFhamc5S25rdkNoRkd4WXc/od6/private/full/R2C1">
            <entry xmlns='http://www.w3.org/2005/Atom' xmlns:gs='http://schemas.google.com/spreadsheets/2006'>
                <id>https://spreadsheets.google.com/feeds/cells/0Aq69FHX3TV4ndDBDVFFETUFhamc5S25rdkNoRkd4WXc/od6/private/full/R2C1</id>
                <link rel='edit' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/cells/0Aq69FHX3TV4ndDBDVFFETUFhamc5S25rdkNoRkd4WXc/od6/private/full/R2C1'/>
                <gs:cell row='2' col='1' inputValue='300'/>
            </entry>
            <input type="submit" value="submit"/>
        </form>

Тем не менее, он не выполняет обратную запись, но положительно возвращает XML-файл, например:

<?xml version='1.0' encoding='UTF-8'?>
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gs='http://schemas.google.com/spreadsheets/2006' xmlns:batch='http://schemas.google.com/gdata/batch'>
    <id>https://spreadsheets.google.com/feeds/cells/0Aq69FHX3TV4ndDBDVFFETUFhamc5S25rdkNoRkd4WXc/od6/private/full/R2C1</id>
    <updated>2011-01-11T07:35:09.767Z</updated>
    <category scheme='http://schemas.google.com/spreadsheets/2006' term='http://schemas.google.com/spreadsheets/2006#cell'/>
    <title type='text'>A2</title>
    <content type='text'></content>
    <link rel='self' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/cells/0Aq69FHX3TV4ndDBDVFFETUFhamc5S25rdkNoRkd4WXc/od6/private/full/R2C1'/>
    <link rel='edit' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/cells/0Aq69FHX3TV4ndDBDVFFETUFhamc5S25rdkNoRkd4WXc/od6/private/full/R2C1/1ekg'/>
    <gs:cell row='2' col='1' inputValue=''></gs:cell>
</entry>

Здесь значение ввода пусто! Тем не менее, это 300 в моей строке XML. Любое дальнейшее решение для того же самого?

1 Ответ

1 голос
/ 12 января 2011

Поскольку протокол HTTP поддерживает только отправку строки, я не уверен, что вы можете это сделать.Но вы можете попробовать использовать ajax-метод jQuery и изменить метод на PUT и тип содержимого и отправить сериализованный XML.

Документация jQuery гласит:

Тип запроса («POST» или «GET»), по умолчанию «GET».Примечание. Здесь также можно использовать другие методы HTTP-запроса, такие как PUT и DELETE, но они поддерживаются не всеми браузерами.

Вызовите вызов ajax:

 $.ajax({
  url: 'ajax/test.html',
  type: 'PUT',
  contentType: 'text/xml',
  processData: false,
  data: xmlDocument,
  success: function(data) {
    console.log(data);
  }
});

Надеюсь, что это сработает.

РЕДАКТИРОВАТЬ : Пожалуйста, предоставьте дополнительную информацию / код о том, что вы пытаетесь сделать.

...