#javascript #php #jquery #ajax #post
#javascript #php #jquery #ajax #Публикация
Вопрос:
Я хотел бы отправлять ajax-команду php-скрипту каждый раз при нажатии кнопки. DIVS называются r, l, t, b для разных направлений. До сих пор я пытался использовать приведенный ниже код. Но почему-то это не работает. У меня не так много опыта в jquery, и именно поэтому я прошу здесь простого решения. Я мог бы написать 4 раза одну и ту же функцию, но это, конечно, не то, что я ищу.
$(document).ready(function(){
function control(id){
$.ajax({
type: "POST",
url: "control.php",
data: {id: "1"},
success: function(data){
alert(data);
}
});
}
$('#r').mousedown(function(){
control($(this).attr('id'));
});
});
Комментарии:
1. Описать «это не работает»
2. Ваш php не улавливает это? Вызывает ли «АЯКС» огонь? Вы вставили
{error:function(){}}
в вызов ajax, чтобы узнать, действительно ли он был запущен?3. Из чего ты отправляешь ответ control.php . Json? Html?
Ответ №1:
Ну, во-первых…
Просто дайте всем вашим разделам класс
<div id="r" class="direction"></div>
<div id="l" class="direction"></div>
<div id="t" class="direction"></div>
<div id="b" class="direction"></div>
Затем перепишите свой jquery
$(document).ready(function(){
$('.direction').mousedown(function(){
$.post("control.php",{id: $(this).attr('id')},function(msg){
alert(msg);
});
});
});
Если вы случайно получаете JSON с серверов….
Вы должны указать тип данных как ‘json’ или ‘jsonp’ для междоменного json и использовать $.ajax
function control(theid){
$.ajax({
type: "POST",
url: "control.php",
data: {id: theid},
dataType: 'json',
success: function(msg){
alert(msg);
}
});
}
Или, если вы хотите, чтобы это было просто, как в приведенном выше примере $.post ….. используйте getJSON
$(document).ready(function(){
$('.direction').mousedown(function(){
$.getJSON("control.php",{id: $(this).attr('id')},function(msg){
alert(msg);
});
});
});
Комментарии:
1. Это тоже был очень хороший ответ, и это даже лучше, потому что вы привязываете событие к классу вместо нескольких идентификаторов. мой ответ работает, но, на мой взгляд, это был правильный ответ.
Ответ №2:
Трудно точно понять, о чем вы спрашиваете, но в основном вам нужно многоцелевое событие щелчка для нескольких divs.
в jQuery вы можете добавить несколько селекторов, разделив их запятыми, например, так:
$('#id, .class, element')
Вот пример, который использует меньше кода для обеспечения той же функциональности, если я правильно понял ваш вопрос.
$(function(){
$('#r,#l,#t,#b').mousedown(function(){
$.post('control.php',{id: $(this).attr('id')},function(data){
//handle data callback
alert(data);
});
});
});
Я использовал $.post
вместо $.ajax
, но имейте в виду, что если вы используете более простые методы, такие как post, get или getJSON, вы не сможете назначить обратный вызов с ошибкой, насколько мне известно. Надеюсь, это изменится в будущих выпусках jQuery.
Ответ №3:
function control(my_id){
$.ajax({
type: "POST",
url: "control.php",
data: {id: my_id},
success: function(data){
alert(data);
}
});
}
Используя $_POST['id'];
, вы должны получить информацию, которую ищете.