JavaScript и Ajax, только работы при использовании предупреждения ()

Используйте команда SC , как это (необходимо быть на командной строке для выполнения команд в этом сообщении):

SC STOP shortservicename
SC DELETE shortservicename
<час>

Примечание: необходимо выполнить командную строку как администратор, не только вошел в систему как администратор, но также и с административными правами. Если Вы заставляете ошибки выше о не наличии необходимых прав доступа останавливать и/или удалять сервис, выполняете командную строку как администратор. Можно сделать это путем поиска командной строки на меню "Пуск" и затем щелчка правой кнопкой и выбора "Выполненный как администратор". Примечание пользователям PowerShell: sc искажается к set-content. Так sc delete service на самом деле создаст файл, названный delete с содержанием service. Чтобы сделать это в Powershell, используйте sc.exe delete service вместо этого

<час>

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

SC QUERY state= all >"C:\Service List.txt"

Для более краткого списка, выполните эту команду:

SC QUERY state= all | FIND "_NAME"

короткое сервисное название будет перечислено чуть выше отображаемого имени, как это:

SERVICE_NAME: MyService
DISPLAY_NAME: My Special Service

И таким образом удалить тот сервис:

SC STOP MyService
SC DELETE MyService
9
задан Chetan Sastry 12 August 2009 в 17:10
поделиться

6 ответов

alert () помогает, потому что это задерживает обработку оставшегося javascript в этой функции (все, от alert () до конца ), оставляя достаточно времени для выполнения запроса AJAX. Первая буква в AJAX означает «асинхронный», что означает, что (по умолчанию) ответ придет «в какой-то момент в будущем», но не сразу.

Одно исправление (которое вы должны не реализация) заключается в том, чтобы сделать обработку синхронной (изменив третий аргумент open () на false ), что остановит дальнейшую обработку вашего скрипта (и всей веб-страницы) до тех пор, пока запрос возвращается. Это плохо, потому что это приведет к зависанию веб-браузера до завершения запроса.

11
ответ дан 4 December 2019 в 15:22
поделиться

Проблема в том, что XMLHTTPRequest является асинхронным - он отправляет запрос в фоновом режиме и не выполняет ' t ждать, пока он закончится.

Оператор alert заставляет код ждать, пока пользователь не щелкнет OK, во время которого запрос завершается.

Вам необходимо использовать событие onreadystatechange , например:

xmlhttp.onreadystatechange = function() {
    if(xmlhttp.readyState==4) {
        // Do things
    }
};

Метод, который вы назначаете этому свойству, будет вызываться после получения ответа. (и в других случаях, поэтому вам нужно проверить, что readyState равно 4)

3
ответ дан 4 December 2019 в 15:22
поделиться

Вы отправляете запрос асинхронно , по этой причине:

xmlhttp.open(..., true);

Передача true в качестве третьего аргумента open ( ) означает, что код будет продолжать выполняться до того, как вернется результат.

alert () дает этому асинхронному запросу время для выполнения до того, как будет выполнен следующий код.

I ' d обычно рекомендует переместить весь код, зависящий от результата вызова AJAX, в обратный вызов в блоке:

if(xmlhttp.readyState == 4)

, но в вашем случае вам нужен результат вызова, чтобы знать, что вернуть из вашей функции проверки. В этом случае вам придется использовать синхронный вызов, передавая false в open () . Тогда ваш последующий код не будет выполняться, пока не будет получен ответ.

2
ответ дан 4 December 2019 в 15:22
поделиться

Это потому, что ваш вызов AJAX асинхронный. Код, следующий за xmlhttp.send () , выполняется немедленно. Он не дожидается завершения вашего вызова ajax (если вы не поставите предупреждение).

Переместите весь код, который будет выполняться после вызова ajax, в метод обратного вызова, чтобы гарантировать, что он будет запущен после завершения вызова.

[Edit]: Помимо проблемы, я думаю, что использование AJAX только для проверки формы, а затем разрешение пользователю отправлять обычным способом кажется мне немного странным.

Можете ли вы разделить валидация на 2 части? Один может быть выполнен исключительно на стороне клиента, а другой включает проверку на стороне сервера. Вы можете выполнить вторую часть полностью на стороне сервера после отправки и вернуть ошибки обратно клиенту.

Другой вариант - полностью отказаться от традиционной отправки. Поскольку вы все равно выполняете вызов ajax, почему бы вам не выполнить сохранение / редактирование / что-то еще в самом вызове ajax, устраняя необходимость в отправке? Однако имейте в виду, что вам все равно потребуется поддерживать обычную отправку, если у пользователя отключен javascript.

0
ответ дан 4 December 2019 в 15:22
поделиться

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

Что-то в этом роде of:

<form onsubmit="return IsValid();">

...

</form>

Вы также всегда можете вернуть false из validateRegForm и xmlhttp.onreadystatechange = function () отправить форму, если она действительна, или иным образом отобразить сообщение об ошибке.

0
ответ дан 4 December 2019 в 15:22
поделиться

В настоящее время нет средств для этого используется стандартный плагин. Вы можете создать плагин для чтения findbugsChecks.xml и вывода необходимой информации.

Приведенный ниже код выведет общее количество обнаруженных ошибок и ошибок для каждого пакета для любого проекта с findbugsChecks.xml в выходном каталоге. Вы можете настроить имя файла, который он читает, установив свойство findBugsChecks в конфигурации:

package name.seller.rich;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.util.xml.Xpp3Dom;
import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;

/**
 * @goal stats
 */
public class FindbugsStatsMojo extends AbstractMojo {

    /**
     * Where to read the findbugs stats from
     * 
     * @parameter expression="${findbugsChecks}"
     *            default-value="${project.build.directory}/findbugsCheck.xml"
     */
    private File findbugsChecks;

    /**
     * Output the Findbus stats for the project to the console.
     */
    public void execute() throws MojoExecutionException, MojoFailureException {
        if (findbugsChecks != null && findbugsChecks.exists()) {
            try {
                Xpp3Dom dom = Xpp3DomBuilder.build(new FileReader(
                        findbugsChecks));

                // get the summary and output it
                Xpp3Dom summaryDom = dom.getChild("FindBugsSummary");

                // output any information needed
                getLog().info(
                        "Total bug count:"
                                + summaryDom.getAttribute("total_bugs"));

                Xpp3Dom[] packageDoms = summaryDom.getChildren("PackageStats");

                getLog().info(packageDoms.length + " package(s)");
                for (int i = 0; i < packageDoms.length; i++) {
                    String info = new StringBuilder().append("package ")
                            .append(packageDoms[i].getAttribute("package"))
                            .append(": types:").append(
                                    packageDoms[i].getAttribute("total_types"))
                            .append(", bugs:").append(
                                    packageDoms[i].getAttribute("total_bugs"))
                            .toString();
                    getLog().info(info);
                }
            } catch (FileNotFoundException e) {
                throw new MojoExecutionException(
                        "Findbugs checks file missing", e);
            } catch (XmlPullParserException e) {
                throw new MojoExecutionException(
                        "Unable to parse Findbugs checks file", e);
            } catch (IOException e) {
                throw new MojoExecutionException(
                        "Unable to read Findbugs checks file", e);
            }
        }
    }
}

Чтобы упаковать этот код, добавьте его в папку src / main / java проекта Maven с POM следующим образом:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>name.seller.rich</groupId>
  <artifactId>maven-findbugs-stats-plugin</artifactId>
  <packaging>maven-plugin</packaging>
  <version>0.0.1</version>
  <dependencies>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-core</artifactId>
      <version>2.2.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-plugin-api</artifactId>
      <version>2.2.0</version>
    </dependency>
  </dependencies>
</project>

Then запустите mvn install , чтобы установить плагин.

Чтобы использовать его, вы можете запустить его как дополнительную цель в командной строке,

0
ответ дан 4 December 2019 в 15:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: