2016-11-20 3 views
0

Удивительно, если есть что-то, чтобы сделать это без использования тайм-аута.Значение параметра jQuery ajax выставляется динамически

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

Таким образом, он в основном выполняет запрос ajax и передает мне токен-ваулу. Затем я беру это значение и обновляю его с помощью формы.

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

У меня есть ответы на работу с этим сторонним скриптом, прямо сейчас я делаю что-то вроде.

resonseData передается обратно ко мне из этого сценария ..

if(responseData.dataValue !='') { 
      $('[name=payment_token]').val(responseData.dataValue, function(){ 
       $("#userPaymentUpdate").submit(); 

      }); 
     } 

^Проблема есть форма представляет до того, как она успеет обновить $ ('[имя = payment_token]'). Вал()

Есть ли способ обойти это в сторону для ввода таймаута? Я думал, добавив обратный вызов, как описано выше, он решит его, но, видимо, этого не происходит.

У меня также есть событие.preventDefault(); в обработчике клика формы, но когда это позволит стороннему скрипту вообще не исполнять. Поэтому в основном нужно только отправить форму, если значение payment_token было обновлено.

+0

Показать полный контекст этого кода. Мы не знаем, как он вписывается в обработку формы или где вы вызываете ajax от – charlietfl

ответ

1

Если я читаю это правильно, это больше похоже на вопрос о порядке. responseData.dataValue имеет значение, в противном случае, если условие не обработано.

Ваш код должен выглядеть следующим образом:

if(responseData.dataValue !='') { 
     $('input[name=payment_token]').val(responseData.dataValue); /* I'm guessing you're using a hidden field for the payment token. */ 
     $("#userPaymentUpdate").submit(); /* at this point, the value will have already been assigned. */ 
    } 
+1

Спасибо .. как я пропустил это. Думал, что мне нужен обратный вызов. – limit