2014-01-31 3 views
0

У меня есть следующие Javascript код:вставки SQL выполняется, но Ajax получает сообщение об ошибке

var value = $.ajax({ 
     type: "POST", 
     url: "receive.php", 
     data: $('#something').serialize(), 
     cache: false, 
     async: true 
    }).success(function(){ 
    }).error(function() { 
     alert("not sent"); 
    }); 

и PHP

if(isset($_POST['the_thingy'])){ 

    $allowed = 100; 

    $the_thingy = $mysqli->real_escape_string($_POST['the_thingy']); 

    $query = "SELECT another thingy from the database"; 

    $the_thingy_length = strlen($the_thingy); 

    if($the_thingy_length <= $allowed){ 


     $query = "INSERT INTO thingyes VALUES '$the_thingy'"; 
     $result = $mysqli->query($query); 



    } 

//amongst other queries and of the same "type" 

в основном то, что происходит, что вставка делается действительно, но по какой-то причине он выглядит как удвоенный в базе данных (2x запрос выполняется один раз). Ajax получает сообщение («не отправлено»); и страница обновляется (что не предполагается). Что может быть причиной этого? Другие запросы, синтаксис кода, некоторые функции? Все остальные ajax я использую работу просто отлично. Это известная проблема из-за чего-то конкретного? Заранее большое спасибо!

+0

Похоже, вам необходимо предотвратить действие по умолчанию вашей формы. Можете ли вы опубликовать полный код, где запускается ajax? И проверьте журнал ошибок для ошибок php. – jeroen

+0

@jeroen Я не могу, кусок кода действительно extralarge и будет казаться несвязанным или запутанным с именами переменных. Как именно я могу запретить действие формы по умолчанию **? Я никогда не делал этого, и каждый аякс работал ... это, в частности, отличается, форма ** # что-то ** составлена ​​из 4 текстовых областей, которые принимают огромное количество текста и затем отправляются. Он хранится как ** ТЕКСТ ** в mysql и, кажется, правильно загружается (не нарезается) ... – user111671

+0

См. Мой ответ, работает ajax, но так же, как и обычная форма, если вы не остановите ее, чтобы вы получить двойное представление (и обновление страницы ...). – jeroen

ответ

1

Для двойного представления и обновления страницы, это звучит, как вам нужно, чтобы предотвратить действие по умолчанию формы:

$("form").on('submit', function(event) { 
    // prevent the default submit 
    event.preventDefault(); 

    // do your other stuff 

    // your ajax call 
    var value = $.ajax({ 
     ... 
    }); 
}); 

Если записи некорректной добавлены, но вы получите к вашей функции ошибки как раз то же самое, возможно, что у вас есть ошибка в php, которая заставляет скрипт выйти с ошибкой (где-то после раздела вставки).

Вы должны включить обработку и отображение ошибок, чтобы увидеть их на вкладке сети ваших инструментов браузера (или временно отключить ajax для отправки в обычном режиме и увидеть ошибку в браузере) или проверить журнал ошибок веб-сервера для сообщений.

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