#php #javascript #jquery #ajax #reload
#php #javascript #jquery #ajax #перезагрузка
Вопрос:
У меня есть список на моем сайте, и когда я нажимаю на каждый из элементов списка, я хочу, чтобы div рядом с ними перезагружался с помощью ajax, чтобы не перезагружать всю страницу.
Вот мой javascript
parameters = "category_id=" categoryId;
var result = ajaxFunction("changeCategory.php", parameters);
$("#mydiv").html(result);
Функция ajaxFunction() — это обычная функция jQuery $.ajax() с «POST». В «changeCategory.php «Я вызываю с помощью include другого php-файла.
Проблема в том, что перезагружается вся страница, а не только div. Я хочу использовать эту имеющуюся у меня функцию ajax, потому что я хочу отправить данные в свой php-файл.
Кто-нибудь знает, что я должен сделать, чтобы перезагрузить только div?
Заранее спасибо
Комментарии:
1. Код выглядит нормально для меня. Если ваша ajaxFunction() вызывает .ajax(), то перезагрузки страницы быть не должно. На какие HTML-элементы в вашем списке вы нажимаете?
2. что вы пробовали — предоставьте здесь фрагмент кода, который содержит ваша функция ajaxFunction() .
3. покажите нам полный код JS (особенно событие, к которому вы привязываетесь)
4. Функция ajax в порядке, потому что я использую ее и для других частей, поэтому я не думаю, что проблема в этом? Элементами HTML являются <li>, и я вызываю этот ajax в «onClick» .
Ответ №1:
Попробуйте это
$(document).ready(function(){
var parameters = {category_id:categoryId};
$.ajax({
url:'changeCategory.php',
type:'post',
data:parameters,
dataType:'html',
success:function(result){
$("#mydiv").html(result);
},
error:function(){
alert('Error in loading [itemid]...');
}
});
});
Также убедитесь, что когда в вашем событии click эта строка записана или нет return false;
, это обязательно.
Комментарии:
1. на самом деле это то, что я делаю в ajaxFunction() .
2. @novellino Я знаю, но вы обратили внимание на return false; это останавливает перенаправление вашей страницы, в основном предотвращая событие по умолчанию.
3. хорошо, спасибо за ответ. Я добавляю также возвращаемое значение false, но не работает. Я просто понимаю, что пока ошибка не в вызове ajax, у меня может быть что-то не так в div, который я пытаюсь добавить результат. Большое спасибо.
Ответ №2:
Попробуйте использовать load для загрузки div с содержимым url —
$("#mydiv").load("changeCategory.php", {category_id: "category_id_value"} );
Вы можете передавать данные в URL.
Метод POST используется, если данные предоставляются как объект; в противном случае предполагается GET .
Ответ №3:
вы можете отправить запрос на этот PHP, чтобы он «понимал», что ему нужно выводить только div, например:
в вашем javascript:
//add the query here
parameters = "category_id=" categoryId "amp;type=divonly";
var result = ajaxFunction("changeCategory.php", parameters);
$("#mydiv").html(result);
в вашем «changeCategory.php «:
//add a query check:
$type = "";
if (isset($_POST['type'])) {
$type = $_POST['type'];
}
//then, depending on the type, output only the div:
if($type === "divonly"){
//output the div only;
} else {
//your normal page
}
Комментарии:
1. @novellino Возможно, я неправильно понял ваш вопрос, кажется, что вся страница перезагружается, и я подумал, что вы имели в виду, что получаете «целую» страницу из php, извините. Если вы действительно хотите вывести только содержимое div, то в предложении if / then внешнего php поместите что-то вроде
echo "<div>content</div>
2. ах, хорошо. Я попробую это. Хотя я понимаю, что, возможно, моя проблема в div, я пытаюсь добавить результат вызова ajax, а не сам вызов ajax. Спасибо
Ответ №4:
$(document).ready(function() {
$.ajax({
url: "right.php",
type: "POST",
data: {},
cache: false,
success: function (response) {
$('#right_description').html(response);
}
});
});
Ответ №5:
Перезагружается вся страница, что означает, что в вашем коде javascript может быть ошибка
проверьте это еще раз или попробуйте это
function name_of_your_function(id)
{
var html = $.ajax({
type: "GET",
url: "ajax_main_sectors.php",
data: "sec=" id,
async: false
}).responseText;
document.getElementById("your div id").innerHTML=html;
}
вы можете использовать метод get или метод post….