2014-09-09 2 views
0

У меня есть форма с текстовым полем tinymce, содержимое которого я отправляю в php-скрипт с помощью команды $ .post jQuery.Отправка постданных с jquery вызывает ошибку 406

Это прекрасно работает в большинстве случаев, если у меня есть форма в этом текстовом поле (это PayPal-Пожертвуйте форма), которая выглядит следующим образом:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank"><input name="cmd" type="hidden" value="_s-xclick" /> <input name="hosted_button_id" type="hidden" value="xxxxxx" /> <input alt="PayPal - The safer, easier way to pay online!" name="submit" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" type="image" /> <img src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" alt="" width="1" height="1" border="0" /></form> 
<p><strong>Make a monthly donation</strong></p> 
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank"><input name="cmd" type="hidden" value="_s-xclick" /> <input name="hosted_button_id" type="hidden" value="xxxx" /> 
<table> 
<tbody> 
<tr> 
<td><input name="on0" type="hidden" value="Make a monthly donation" /></td> 
</tr> 
<tr> 
<td><select name="os0"> 
<option value="$10 Month">$10 Month : $10.00 USD - monthly</option> 
<option value="$25 Month">$25 Month : $25.00 USD - monthly</option> 
<option value="$35 Month">$35 Month : $35.00 USD - monthly</option> 
<option value="$50 Month">$50 Month : $50.00 USD - monthly</option> 
<option value="$100 Month">$100 Month : $100.00 USD - monthly</option> 
<option value="$125 Month">$125 Month : $125.00 USD - monthly</option> 
<option value="$140 Month">$140 Month : $140.00 USD - monthly</option> 
<option value="$200 Month">$200 Month : $200.00 USD - monthly</option> 
<option value="$250 Month">$250 Month : $250.00 USD - monthly</option> 
<option value="$300 Month">$300 Month : $300.00 USD - monthly</option> 
</select></td> 
</tr> 

<tr> 
<td><input maxlength="200" name="os1" type="text" /></td> 
</tr> 
</tbody> 
</table> 
<input name="currency_code" type="hidden" value="USD" /> <input alt="PayPal - The safer, easier way to pay online!" name="submit" src="https://www.paypalobjects.com/en_US/i/btn/btn_subscribeCC_LG.gif" type="image" /> <img src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" alt="" width="1" height="1" border="0" /></form> 

Как ни странно, это работает на моем локальном веб-сервере. Но когда я положил его на live-сервер, он производит указанную ошибку 406 ...

Любые идеи?

[Редактировать]

Вот JavaScript:

var serial = $('#frmPageEdit').serialize(); 

serial = serial + "&fid_navigation=" + id + "&action=save_page"; 

$.post('pages.html', serial, function(data){ 

      var result = _pagesSplitResponse(data); 
      // Do some stuff with the response here... 

      window.alert(_pagesTranslations['seite_gespeichert']); 
} 

Опять же - он отлично работает со всем другим содержанием, это просто форма выше, что вызывает ошибку ...

+0

Пожалуйста, покажите свой Javascript. – nullability

+0

отправил js в редакторе – Swissdude

+0

Попробуйте переключить его на запрос 'GET'. PHP-скрипт может не поддерживать 'POST'. Ссылка: http://stackoverflow.com/questions/11645844/406-not-acceptable-error-on-live-server-json – bencripps

ответ

0

Поворотов out, это был некоторый XSS-механизм на сервере, который вызвал ошибку. Не знаю точно, какая часть формы вызвала ошибку, но я подозреваю, что это поля ввода.

Для всех, кто работает с той же проблемой, вот решение:

Используйте какие-то base_64-кодирования для форм-Пера, которые вызывают проблемы перед отправкой (как этот: https://github.com/carlo/jquery-base64 для JQuery) а затем в base_64-декодировать его в принимающем PHP-скрипте.

Одна вещь, которая вызвала некоторые проблемы с этим, заключалась в том, что я использую tinyMCE в качестве редактора, который добавил

...

вокруг закодированной в base_64 строки. Из-за этого декодирование было неудачным. Поэтому перед декодированием убедитесь, что вы удаляете каждый HTML-элемент из кодированной строки.

Надеюсь, что это поможет любому

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