Не осуждаемый эквивалент - PullRequest
       13

Не осуждаемый эквивалент

6 голосов
/ 28 января 2011

Я хочу добиться того же, что и ...

window.open('lalala.php', 'lalala', '...');

Но я хочу отправить запрос HTTP POST вместо запроса HTTP GET.Таким образом, я использую следующее:

$('<form/>').attr('action', 'lalala.php')
            .attr('target', 'lalala')      // w3schools.org says this is deprecated
            .attr('method', 'post')
            .append(hiddenParam('param1', param1))
            .append(hiddenParam('param2', param2))
            .submit().remove();

// hiddenParam is a function I created that returns an input tag
// the type attribute set to hidden,
// the id attribute set to the first parameter,
// and the value attribute set to the second parameter

Однако атрибут target устарел.Есть ли способ достичь того, что я пытаюсь сделать, не осуждая средства?

Ответы [ 3 ]

6 голосов
/ 28 января 2011

Использовать target - не рекомендуется.

5 голосов
/ 28 января 2011
  1. target отсутствует только в строгих типах документов. Это не рекомендуется. Самое простое решение - использовать переходный тип документа.
  2. Все браузеры, о которых я знаю, поступают правильно, даже если вы используете строгий тип документа.
  3. Если вы должны использовать строгий тип документа, и вам так важна проверка, тогда вы можете расширить определение типа документа:

Просто помните об этой "ошибке" практически в каждом браузере . Решение состоит в том, чтобы использовать ваш XHTML как application/xhtml+xml, но это приведет к взрыву IE, поэтому вам нужно отследить этот браузер, прежде чем определять тип контента. По сути, это один гигантский хак для крошечного флажка в форме проверки. Обычно гораздо проще использовать переходный тип документа.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" [ <!ATTLIST form target CDATA #IMPLIED> ]>
0 голосов
/ 28 января 2011

Добавить

<form target="lalala" ...></form>
...