2015-10-13 2 views
0

Я действительно хочу знать, есть ли более короткая альтернатива написанию этого кода. Я попытался укоротить его до 2 или 1 функций и достиг неудачного провала. Я ищу конструктивную обратную связь!Могу ли я сократить этот скрипт? (обновить таблицу БД и обновить)

<script type="text/javascript" src="jquery.min.js"></script> 
<script type="text/javascript"> 
function f_solar_1() { 
    $.get("f_solar_1.php"); 
    return false; 
} 
</script> 

<script type="text/javascript"> 
function refresh(){ 
location.reload(true);} 
</script> 

<script type="text/javascript"> 
function both(){ 
    f_solar_1() 
    setTimeout(refresh, 5); 
    } 
</script> 

<a href="#" onclick="both();">Activate</a> 

Детали:

Этот код отрывок из моей страницы PHP, который отображает таблицу из моей базы данных MySQL (я использую WAMP).

Текст «Активировать» внизу должен ОБНОВИТЬ переменную в этой таблице и делает это через файл f_solar_1.php.

Проблема заключается в том, что таблица, отражающая базу данных, автоматически не отражает это изменение.

Таким образом, я сделал функцию «перезагрузить()», чтобы обновить страницу, и функцию «both()» во время обновления после обновления базы данных.

Я знаю базовый html какое-то время, но я новичок в mysql, ajax и php с сегодняшнего утра, и это моя попытка погрузиться в него.

Мой код работает нормально, он просто беспокоит меня, не зная, могу ли я выполнить одно и то же в рамках одной функции.

Спасибо заранее!

ОБНОВЛЕНИЕ: Благодарим Dat Pham за то, что указали мне в правильном направлении!

<script type="text/javascript"> 
function newfunc(){ 
$.get("f_solar_1.php", function(data) { 
location.reload(true); 
});} 
</script> 

<span onclick="newfunc();">newfunc</span> 

Код - все в одной функции (ну ...) и не вызывают конфликт времени восстановления и php.

+0

где ваш php-код –

+0

внешний php-файл представляет собой прямой скрипт $ sql для обновления переменной в моей таблице mysql и всего, что окружает такие, как подготовка и выполнение операторов, а также catch. У меня создалось впечатление, что этот код не может быть улучшен, поэтому я не включил его, потому что он только серверный. Сценарий, на который я поставил под сомнение эффективность, был тем, который я опубликовал изначально. – Adrea

ответ

0

Выполнение 1 функции делает все, что считается плохой практикой, функция должна выполнять и выполнять атомную задачу. Ваш код в порядке, за исключением некоторых незначительных баллов:

  • ajax call $ .get() и location.reload не должны использоваться друг с другом, так как это уничтожает смысл вызова ajax. Вы можете передать функцию обратного вызова для обработки данных из бэкэнда сервера как $.get("f_solar_1.php", function(data) { alert("Load was performed."); });
  • Объедините все теги сценария в 1 со всей вашей функции объявить

С уважением,

+0

Несмотря на ваш совет против смешивания ajax и location.reload ... результат Beautiful !!! У меня есть чувство (теперь я новичок в этом, так что здесь нет никакого доверия), который мгновенно обновляет страницу, которая заходит на страницу php, которая обновляет таблицу базы данных mysql, поэтому я не мог включить все как одну функцию , Ваше предложение решило это. Я знал, что есть более эффективный способ! Следующим шагом является исследование потенциала функций обратного вызова. Спасибо! – Adrea

0

Вы проверили базу данных с помощью внутреннего интерфейса (например, phpmyadmin) и проверяется, происходят ли изменения, даже если они не отображаются?

Мне интересно, действительно ли ваша страница не освежает и просто «#». Проверьте «return false» - на самом деле это не относится к ссылке «A», вам нужно будет поместить «return false» в «обе» для этого, чтобы отменить ссылку. Но вы, возможно, не захотите это сделать, потратив минуту, чтобы прочитать это: The return false onclick anchor not completely working

Кроме того, я бы рекомендовал использовать прослушиватель событий jquery add, чтобы вызвать вызовы функций и получить onClick из тэга html , Бонус, если вы научитесь делать это без jquery.Прочтите это реальное быстро jquery href and onclick separation

+0

Моя страница работает так, как я и предполагал, поведение страницы не нужно исправлять. Именно сам код просто неэффективен, имея 3 функции плюс отдельный файл php, чтобы мгновенно обновить таблицу, отображаемую на странице, одним нажатием кнопки. Я просто подумал обо всех переключателях включения/выключения рядом с каждой переменной, которую мне нужно было бы создать, и умножить ее на три функции. Я знаю, что я мог бы сделать то же самое, используя текстовое поле для упрощения, но я хочу знать, возможен ли этот метод. – Adrea

+0

Я тщательно изучил обе статьи, которые вы предоставили, и отразил каждый предлагаемый скрипт, и может заставить каждый код функционировать и выполнять действия, которые я хочу, пока я не заменим их функцию сценарием обновления. Это заставляет меня думать, что браузер запускает обновление конгруэнтно с файлом php, который обновляет таблицу базы данных mysql и не дает ему времени для выполнения. Если это так, моя отложенная функция перезагрузки необходима, как только она есть, если нет более чистого метода достижения такого же эффекта – Adrea

+0

, о котором я не знаю, и в этом случае я надеялся узнать (сегодня мой день 2 из программирование в стороне от html в блокноте). Если вы представляете себе метод, который является jquery бесплатно, пожалуйста, поделитесь. Я выясню часть скриптов, если вы просто назовете альтернативный язык и скажите, что это возможно. Благодарим вас за отзыв. – Adrea

Смежные вопросы