У меня есть таблица базы данных, из которой я пытаюсь получить данные с помощью JQUERY AJAX. Когда моя первая страница загружается, она выполняет php-вызов таблицы и заполняет элемент формы выбора. - Это работает. Затем я хочу выбрать один из вариантов отправки формы и вернуть строку через Ajax. Раньше у меня сценарий работал только с файлами PHP, но у меня проблемы с его работой. При отправке формы мой URL меняется:
http://localhost/FINTAN/testertester.php?name=Specifics.
Я ничего не получаю обратно. Вдобавок, глядя на мою консоль, я получаю jquery not defined factory (jquery). Я могу найти нужную строку в моем jquery ui.js. Не уверен, что это проблема, или проблема возникла из-за моего кода. Я очистил кеш firefox, и из-за того, что у меня не было успешного вызова AJAX через метод jquery, я предполагаю, что это мой код.
Чтобы получить приведенный ниже код, я смешал и сопоставил книгу, онлайн-руководство и многие другие источники, и это не моя первая попытка. В идеале я хотел бы вывести строку таблицы. Тем не менее, просто заставить запрос работать и знать, что это не проблема конфликта или совместимости, я бы почувствовал себя лучше и не мешал, прежде чем я начну
<script src="jquery/jquery-ui-1.11.2/jquery-ui.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#btn").click(function(){
var vname = $("#name").val;
}
}
$.post("addithandle1.php",
{
name:vname};
function(response,status){
alert("recieved data-------*\n\nResponse : " + response
+"\n\nStatus : " + status);
}
}
</script>
</head>
<body>
<?php
include "config.php";
if (mysqli_connect_errno($con))
{
}
else
{
$result = mysqli_query($con, "SELECT * FROM script ");
echo " <Form method='post'> <label>Script :</label> <select id='name' name='name' >";
}
while($row = mysqli_fetch_array($result))
{
echo "<option value = '".$row['scriptname']."'>".$row['scriptname']."</option>";
}
echo "</select>";
echo "<button id='btn' class='btn-search'>Load Script </button></form>";
?>
</body></html>
Это мой файл PHP, из которого я пытаюсь извлечь
<?php
include 'config.php';
$batchtype2 = $_POST['name'];
$batchtype2 = mysqli_real_escape_string($con,$batchtype2);
$sql = "SELECT * FROM script WHERE scriptname = '".$batchtype2."' ";
$result = mysqli_query($con,$sql);
$count=mysqli_num_rows($result);
if($count==0 ){
echo "</br></br></br></br></br></br></br><p> No Matching results found</p>";
}
else{
while($row = mysqli_fetch_array($result)) {
echo '<tr><td>'.$row['scriptname'].'</td></tr>';
echo '<tr><td>'.$row['scripthours'].'</td></tr>';
echo '<tr><td>'.$row['scripttotal'].'</td></tr>';
}
}
mysqli_close($con);
?>
Заранее благодарю за любую помощь
2 ответа
Внеся следующие исправления (у вас есть некоторые проблемы с синтаксисом, а также проблемы с использованием, которые должны быть обнаружены в консоли вашего браузера при загрузке этой страницы) в вашем JavaScript / jQuery, это будет работать так, как вы ожидаете -
Обязательно измените эту строку -
var vname = $("#name").val;
К этому -
var vname = $("#name").val(); // note the parentheses
В вашей функции -
$(document).ready(function(){
$("#btn").click(function(e){
e.preventDefault(); // prevent the default action of the click
var vname = $("#name").val();
$.post("addithandle1.php", {name:vname}, function(response, status) { // POST instead of GET
// never use alert() for troubleshooting
// output for AJAX must be in the callback for the AJAX function
console.log("recieved data-------*\n\nResponse : " + response +"\n\nStatus : " + status);
$('#table').html(response); // put response in div
});
});
});
Теперь $_POST['name']
должен правильно заполниться.
Чтобы таблица отображалась на вашей запрашивающей странице, сначала убедитесь, что ваш PHP полностью формирует таблицу.
Добавьте div
на запрашивающую страницу и измените вызов AJAX выше, как показано.
<div id="table"></div>
Теперь, когда вы делаете запрос, div
на запрашивающей странице будет обновляться с учетом того, что возвращается из сценария PHP.
В вашем сценарии есть несколько моментов.
Во-первых, убедитесь, что вы пишете хорошо структурированный код и все в нем не в том месте / не сломано.
У вас есть в $ (document) .ready (function () {только событие .click кнопки, но вы оставили запрос ajax снаружи, я предполагаю, что вы это сделали, поэтому он также сделает запрос ajax при загрузке первой страницы
Проблема в том, что теперь он будет делать это только при загрузке первой страницы, но не когда вы нажимаете кнопку, при нажатии кнопки вы получаете только значение имени.
Я рекомендую вам попробовать что-то вроде этого:
<script>
$(document).ready(function() {
// bind button click and load data
$("#btn").click(function(){
loadData();
return false; // prevent browser behaviour of the button that would submit the form
}
// load data for the first time
loadData();
};
function loadData() {
var vname = $("#name").val;
$.post("addithandle1.php", { name:vname }, function(response, status) {
alert("recieved data-------*\n\nResponse : " + response
+"\n\nStatus : " + status);
});
}
</script>
Несколько примечаний:
- Я бы рекомендовал всегда помещать код jquery внутри $ (document) .ready, поскольку это гарантирует, что jquery был загружен перед его запуском.
- По умолчанию форма, имеющая кнопку отправки, которую вы нажимаете, получит форму, отправленную браузером, если вы используете ajax, вы должны предотвратить такое поведение либо в событии нажатия кнопки, либо в форме с onsubmit = "return false".
Похожие вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.