2013-08-19 2 views
0

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

Это код (он пришел с JQuery сайта API, и я изменил его немного, чтобы попробовать то, что я хотел случиться):

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>change demo</title> 
    <style> 
     div { 
     color: red; 
     } 
    </style> 
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
</head> 
<body> 

    <select id="selector" name="sweets"> 
     <option>Chocolate</option> 
     <option selected="selected">Candy</option> 
     <option>Taffy</option> 
     <option selected="selected">Caramel</option> 
     <option>Fudge</option> 
     <option>Cookie</option> 
    </select> 
    <div></div> 

    <script> 
    $("#selector") 
     .on('change',(function() { 
      $("select option:selected").each(function() { 
       <?php header("Location:jcue.php")?> 
      }); 
     }) 
     .change(); 
    </script> 
</body> 
</html> 

То, что я хочу, чтобы это произошло в том, что, страница должна только перенаправить до jque.php после изменения значения входного значения. Но то, что происходит в программе, заключается в том, что она автоматически перенаправляется на другую страницу, даже не загружая текущую страницу. В чем проблема? jQuery и Javascript - это неисследованные чужие земли для меня в веб-программировании, и я знаю, что это довольно просто для многих веб-программистов, но мне это просто нужно (и мне действительно нужно начинать изучать Javascript, AJAX и jQuery, когда я получаю свободное время ха-ха).

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

Может кто-нибудь мне помочь? Спасибо. Ответы будут высоко оценены.

+0

, как только браузер посмотрит ваш заголовок php, он будет выполнен. – peterchon

+0

Почему вы пытаетесь сделать переадресацию в цикле? –

+0

Что такое var str = "" for? –

ответ

3

Попробуйте это вместо ::

$(function() { 
    $("#selector").change(function() { 
     location.href = "jcue.php"; 
    }); 
}); 

Это позволит устранить проблему.

+0

В значительной степени решена моя текущая дилемма. Могу ли я использовать это немного по-другому (CodeIgniter)? Как, например, перейдите к URL, а не к файлу? – christianleroy

+0

Примечание: конструкция '$ (function() {})' здесь не обязательно требуется, так как сценарий находится в конце тела. –

+0

@ChristianCastillo, да вы можете использовать его CodeIgniter. Хотя в этом случае вы перенаправляетесь в файл «juce.php» по URL-адресу. –

1

Проблема заключается в том, что ваш PHP запускается, как только загружается страница - вы не можете включить ее, как в javascript. Кроме того, вам не нужен each() внутри обработчика. Попробуйте это вместо:

1

JavaScript - это клиентский скрипт, а PHP - серверный. Вы пытаетесь вызвать перенаправление заголовка PHP, которое должно произойти во время сервера, прежде чем оно будет отправлено в браузер клиента. Таким образом, это не будет работать в этом случае на событии изменения.

Просто используйте:

$("#selector").change(function() { 
    window.location = "jcue.php"; //this can be URL as well 
}); 

P.S. Я заметил, что у вас есть два «избранных» варианта, разумеется, почему?

0

Не так хорошая практика: перенаправлять с помощью Javascript, так как JS может быть заблокирован

Были некоторые синтаксические ошибки, вот исправить, просто замените код.

$("#selector").on('change',(function() { 
    var str = ""; 
    $("select option:selected").each(function() { 
     window.location.replace("http://stackoverflow.com"); 
    }); 
})); 

Good Practice: использование JQuery Ajax просит Jquery Ajax или перенаправлять с использованием стандартных php header функцию (которая должна выполняться до вашего HTML/JS загружается)

удачи, обучения программированию. Это весело!