Как передать данные в Javascript (!), Который вызывается через ajax? - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть проверка - javascript для формы, которая вызывается через AJAX и возвращает результат. В AJAX -Call я передаю некоторые параметры данных, но я не знаю, как их прочитать в сценарии проверки.

...
$.ajax({
            url: validation.js",
            dataType: "script",
            data: { validate: 'true' },
            success: function () {
...

В проверке. js Я хочу прочитать параметр validate, как я это делал, когда звонил PHP ($ _GET ['validate']).

Это возможно? В консоли браузера я вижу, что скрипт вызывается с «validation. js? Validate = true», но как я могу получить доступ к validate в Javascript?

Это действительно сложно искать, потому что все, что я нахожу, это "Передача параметров в / из PHP" и "получение параметров с помощью JS с помощью url-substring-stuff" ..

Спасибо,

Paco

EDIT Что я пытался сделать: расширить рабочий Javascript с помощью (на стороне клиента) функции проверки, которая может быть расширена с течением времени, не касаясь остальных сценария. И я хотел использовать callback-вызов AJAX для ответа на результат проверки.

main. js

// validate Input on update
  $.ajax({
    url: validation.js",
      dataType: "script",
      data: { validation: validation },
        success: function () {
          var result = validate();
            // validation not successful
            if (!result.valid) { ... }

validation. js

function validate() {

    var result = {
        valid: true,
        data: ''
    };

    if(foo) {
        result.valid = false;
        result.data = "There was an error: ...";
    }
    return result;

}

Это была моя первая идея, и она работала хорошо, за исключением параметра data в AJAX -Call, который появился позже и который я не смог оценить. Но я думаю, что это все еще проблема xy, и есть лучший и более простой способ просто написать функцию, как предложил @quentin ..

1 Ответ

0 голосов
/ 18 февраля 2020

Ajax предназначен для выполнения HTTP-запроса, чтобы код на стороне сервера мог обработать запрос и предоставить соответствующий ответ.

jQuery * script dataType предназначен для использования, когда код на стороне сервера отвечает JavaScript.

Вам не следует использовать его, если вы хотите передать данные на стороне клиента JavaScript (что здесь имеет место).

(Тем не менее, я ожидаю, что возможно , если вы напишите свой сценарий, чтобы он использовал document.currentScript для поиска элемента <script> (при условии jQuery создает один и не просто eval ответ), затем извлекает его свойство src и затем анализирует строку запроса ).

Если вы хотите обработать данные со стороны клиента JS. Не используйте Ajax. Просто определите функцию:

function validate(data) {
}

… и передайте ей данные: validate({ validate: 'true' }).

И если вы хотите использовать Ajax, напишите какой-нибудь код на стороне сервера. Если вы хотите сделать это в JavaScript, используйте Node.js с Express и ответьте JSON, а не сценарием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...