Хотя я все еще читаю книгу Николаса К. Закаса (читаю более 300 страниц в течение 4 дней), тем временем я получил небольшой проект по созданию полуавтоматизированной страницы генератора документации для нашего более позднего крупного проекта. Это сделано наполовину, но теперь я хочу предоставить больше функций, которые требуют, чтобы мне нужно было отправлять значения textareas на PHP, поэтому PHP может обновлять mysql и vica versa, но теперь это не так.
Проблема: Ajax успешно, я получаю сообщение об успешном завершении, но PHP не читает POST. Зачем?
Я сделал свое исследование, прочитал тоны тем stackoverflow и других сайтов, phpmanual, w3school примеров, но что-то не так.
<form id="foo"> <label for="bar">A bar</label> <input id="bar" name="bar" type="text" value="" /> <input type="submit" value="Send" /> </form> <div id="result"></div> <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> <script src="script.js"></script>
/* Attach a submit handler to the form */ $("#foo").submit(function(event) { /* Stop form from submitting normally */ event.preventDefault(); /* Clear result div*/ $("#result").html(''); /* Get some values from elements on the page: */ var values = $("#foo").serialize(); console.log("val: "+values); /* Send the data using post and put the results in a div */ $.ajax({ url: "ez.php", type: "POST", data: values, success: function(){ $("#result").html('Submitted successfully'); }, error:function(){ alert("failure"); $("#result").html('There is error while submit'); } }); });
<?php if(isset($_POST['bar'])) { echo "hello " . $_POST['bar']; }; ?>
Все три файла находятся в одной папке.
Я, конечно, узнаю об этой теме все больше и глубже, а сейчас мне нужно как можно скорее закончить этот небольшой проект. Я буду сторонним разработчиком, поэтому часть php не будет ждать меня, но теперь мне это нужно для тестирования, пока я не смогу поговорить с программистом на стороне сервера. Я хочу быть уверенным, какие переменные и данные я пошлю ему, чтобы он мог их обработать позже.
Заранее спасибо!
Откуда вы знаете, что ваш скрипт не получает данные?
измените успех следующим образом:
success: function(data){ $("#result").html('Submitted successfully:' + data); },
Все, что вы делаете, говорит «если ответ получен без обновления ошибки div» – у вас нет способа узнать, запущен ли ваш php-скрипт УСПЕШНО (он работает по мере того, как вы добиваетесь успеха) или нет на данный момент.
с помощью «данных» в функции вы можете увидеть, была ли информация передана вашим сценарием.
Попробуйте выше и сообщите нам, как вы
ДЛЯ ЯСНОСТИ
PHP-скрипты при доступе к ним выполняются ONCE – у них нет памяти (кроме фиксированных переменных, таких как $cheese = "yummy";
Причина, по которой вы не видите ответ при доступе к странице (даже после запуска скрипта), состоит в том, что она немного глупа и не помнит, как вы ее запускали.
Таким образом, доступ к скрипту напрямую выполняется скриптом
«О, это время показа, правильно ….. err ….. ok – человек отправил мне« бар »- не так хорошо, в этом случае я не буду делать то, что находится внутри оператора if – конец моей работы – Мне здесь ничего нечего, я ничего не пошлю.
Попробуй это:
измените $_POST['bar'] to $_GET['bar'];
Затем перейдите к URL-адресу, где находится скрипт, и введите http://yoururl.com/script.php?bar=terrence
Вы заметите, что теперь вы получили ответ, потому что вы передали скрипту то, что он хотел вернуть true, и поэтому выполняйте то, что находится внутри оператора if.
Чтобы данные сохранялись, вам необходимо сохранить базу данных или текстовый файл.
Надеюсь, это ясно!
Если вы на окнах, получите Fiddler. Это бесплатный сниффер пакетов от Microsoft. Это позволит вам увидеть, что находится между ними. Вы сможете увидеть, что видит сокет из браузера и что получает сокет от сервера.
http://msdn.microsoft.com/en-us/library/bb250446%28v=vs.85%29.aspx#ie_introfiddler_topic2
Это может быть немного переполнено тем, что вы делаете, но я считаю, что всегда хорошо иметь отличные инструменты для отладки. Он покупает вам варианты и открывает возможности.
Есть и другие. И я уверен, что есть инструменты nix.
Я думаю, что все правильно, за исключением того, что вы передаете какое-либо значение из вашей формы. Просто замените этот код
<form id="foo"> <label for="bar">A bar</label> <input id="bar" name="bar" type="text" value="something" /> <input type="submit" value="Send" /> </form>
Я думаю, что это решит вашу проблему. И добавьте изменение этого небольшого кода в js
форма
success: function(){ $("#result").html('Submitted successfully'); },
К
success: function(result){ $("#result").html('Submitted successfully'+result); },