Подскажите плизз как можно упростить код
У меня имееться вот такой вот код
$.ajax({ url:"save.php", data:"save01="+$("#select010").val() +"&save02="+$("#select020").val() +"&save03="+$("#select030").val() +"&save04="+$("#select040").val() +"&save05="+$("#select050").val() +"&save06="+$("#select060").val() +"&save07="+$("#select070").val() +"&save08="+$("#select080").val() +"&save09="+$("#select090").val() +"&save10="+$("#select100").val() +"&save11="+$("#select110").val() +"&save12="+$("#select120").val(), success: function(save){ $(".save01").append(save); } Подскажите плизз как его можно упросить, чтоб не был таким большим, это еще даже не все там еще больше эти данных передается. |
Очевидно цикл. Но хен знает эти ваши фреймворки.)
|
А может еще у кого будут какие-нибудь предложения?
|
А чем не нравится цикл? Он превратит 12 строк из вашего кода в 2. Упрощение уже очевидно.
|
А в цикле может $.ajax передавать данные в пхп скрипт?
если да, то подскажите плизз как |
Вы все неправильно поняли. Надо не запросы в цикле делать, а всего лишь передать в запрос параметры. Запрос так и будет один.
|
В двух словах
У меня на странице много селекторного меню ( раскрывающиеся списки) так вот мне нужно чтоб при нажатии на кнопку в пхп передавались все выбранные данные из этих списков и тогда уже пхп их обрабатывает. Пока реализовал это с помощью кода такого $.ajax({ url:"save.php", data:"save01="+$("#select010").val() +"&save02="+$("#select020").val() +"&save03="+$("#select030").val() +"&save04="+$("#select040").val() +"&save05="+$("#select050").val() +"&save06="+$("#select060").val() +"&save07="+$("#select070").val() +"&save08="+$("#select080").val() +"&save09="+$("#select090").val() +"&save10="+$("#select100").val() +"&save11="+$("#select110").val() +"&save12="+$("#select120").val(), success: function(save){ $(".save01").append(save); } но я уверен что это же можно упростить как-то, так как дальше будет еще хуже, будет до 20 селекторных меню и больше |
Ну вам же сказали - цикл. Выбирайте все нужные селекты, пройдитесь по ним циклом (тем же each, например) и соберите их значения. Какие проблемы-то?
|
Собрать то нету проблем, а как потом передать эти все данные в пхп скрипт? и не просто спрокой через запятую, а именно чтоб имена были у этих значений, чтоб пхп скрипт потом мог их обработать правильно
|
Сейчас вы передаете строку. Теперь вам надо собрать ту же строку, только циклом. Что в этом сложного?
|
Вот теперь вроде бы понял ;)
Спасибо за помощь! |
По-идее, как-то так…
var dataArray = []; $("[id^=#select]").each(function(){ // для каждого элемента, чей id начинается с "select" var match = /^select(\d+)0$/.test(this.id); // соответствует маске? if (!match) return true; // нет — игнорируем dataArray.push("save" + match[1] + "=" + $(this).val()); // используя выдранное значение, добавляем значение в массив }) $.ajax({ url:"save.php", data: dataArray.join("&"), // соединяем куски массива так, что их разделяет "&" success: function(save){ $(".save01").append(save); } Должно работать, если я не опечатался, для всех элементов с id = "select{любое положительное количество цифр}0" |
Вот это вообще суперское решение!!!
Большое человеческое СПАСИБИЩЕ!!! )) пойду пробовать реализовывать это в жизнь ;) |
Не могли бы вы плизз пояснить что тут происходит
03 var match = /^select(\d+)0$/.test(this.id); // соответствует маске? 04 if (!match) return true; // нет — игнорируем Не совсем понял как маска тут формируется /^select(\d+)0$/.test(this.id); И для чего потом проверку запускать? |
$("[id^=#select]") массив всех элементов у которых id начинается с select var match = /^select(\d+)0$/.test(this.id); Проверка, подходит ли id под "маску". "маска" = регулярное выражение. Говорит в данном случае о том, что строка должна начинаться с select, за тем следовать одно или более чисел от 0 до 9 (\d+), затем следует 0. $ - конец строки. Проверка собственно нужна затем, чтобы отсеить ненужные элементы. |
Может заюзать старый добрый POST?:-?
А пых пусь сам отсеит лишнее... |
Всем большое спасибо за ответы!!!
А как потом используя этот вариант получить в пхп все данне передаваемые? var dataArray = []; $("[id^=#select]").each(function(){ // для каждого элемента, чей id начинается с "select" var match = /^select(\d+)0$/.test(this.id); // соответствует маске? if (!match) return true; // нет — игнорируем dataArray.push("save" + match[1] + "=" + $(this).val()); // используя выдранное значение, добавляем значение в массив }) $.ajax({ url:"save.php", data: dataArray.join("&"), // соединяем куски массива так, что их разделяет "&" success: function(save){ $(".save01").append(save); } |
Что никто не подскажет? Или уже пхп вопросы не касаются этого форума?
|
Разделом ошибся.
|
Не захотелось новую ветку создавать ради этого вопроса, подумал что может быть тут ответят. Ладно создам новую
|
Часовой пояс GMT +3, время: 15:32. |