2015-07-26 2 views
0

Я пытаюсь опубликовать большие объемы текста через $.post в jQuery и получить ответ 406. Он работает нормально около 300 символов. Ниже мой код:

index.php

HTML

<form class="formss" action="index.php"> 
    <textarea id="submittts" name="tts" spellcheck="false"></textarea> 
</form> 

JQuery

$('.save').click(function() { 
    $.post('store.php', $('.formss').serialize()) 
}); 

store.php

<?php 
$tts = $_POST['tts']; 
$texttostore = $tts; 

$servername = "localhost"; 
$username = "xxx"; 
$password = "xxx"; 
$dbname = "notes"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "INSERT INTO notes (code) 
VALUES ('$texttostore')"; 

if ($conn->query($sql) === TRUE) { 
    echo stripslashes(str_replace('\r\n',PHP_EOL,$texttostore)); 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

$conn->close(); 
?> 

.htaccess

<IfModule mod_security.c> 
SecFilterCheckURLEncoding Off 
</IfModule> 

Получение следующий ответ: http://i.stack.imgur.com/MUZpX.png

также пытались с местной отправки формы, но также воспитывать плохой запрос.

Примечание: Все пробелы и форматирование сохраняется при хранении, и что является намеренным

Если кто-то может помочь мне, что было бы здорово, спасибо :)

+0

Вот почему я пытаюсь понять, почему я получаю сообщение об ошибке. То же самое происходит с ответом ajax. Ответ – Aotik

+0

406 означает, что 'content-type' в вашем ответе неприемлем для браузера. См. Заголовок запроса 'Accept' для вашего вызова Ajax и посмотрите, совпадает ли заголовок ответа' content-type' с одним из значений вашего запроса. – Arkantos

+0

@arkantos. Я вижу, что отправляемая длина контента больше, чем «принята». Я предполагаю ? Вот скриншот http://i.imgur.com/SSczVGa.png – Aotik

ответ

1

Веб-браузеры делают запрос на получение информации с сервера. Когда это произойдет, он отправит заголовок Accept. Это сообщает серверу, в каких форматах браузер может принимать данные. Если сервер не может отправить данные в формате, запрошенном в заголовке Accept, сервер отправляет 406 Not Acceptable error.

На скриншоте, прилагаемом к комментариям, вы можете ясно видеть, что charset в заголовках ответов iso-8859-1. Просто отправьте ответ в кодировке UTF-8, и это должно решить проблему.

Посмотрите на эту ссылку SO, чтобы установить заголовок charset в ответе PHP.

+0

Удивительная благодарность. Я попытался установить 'header ('Content-Type: charset = utf-8');' как index.php, так и store.php, однако я все еще получаю заголовок 406:/Response по-прежнему появляется как 'Content- Тип: текст/html; charset = iso-8859-1' – Aotik

+0

Вы подтвердили то же самое в своих заголовках ответа? как вы делали это раньше в dev tools – Arkantos

+0

Да, однако, когда я отправляю небольшие блоки текста, на самом деле заголовок ответа: 'Content-Type: charset = utf-8' – Aotik

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