2014-10-15 3 views
1

Как передать var из javascript в сервлет. Да, я знаю, что вы можете использовать getParameter на стороне сервлета, но сначала мне нужно сделать некоторые файлы javascript, а затем оттуда передать эту новую переменную сервлету.Передача переменной javascript в сервлет

Смотрите мой пример Javascript:

function openBrWindowAndSubmit() { 

    var textBodyValue = encodeURIComponent(document.getElementById("textBody").value); 
    alert(textBodyValue); //returns empty 
    document.forms[0].submit(); 

    var textBodyValue = encodeURIComponent(document.getElementById("textBody").value); 
    alert(textBodyValue); //works 

} 

Как вы можете видеть в приведенном выше примере первый «тревога» блок возвращает пустой, но второй один возвращает правильное значение кодированного, так как document.forms [0]. submit уже вызывается. Так есть способ, которым я могу получить вторую переменную textBodyValue (которая находится вне document.forms [0] .submit) к сервлету? Я звоню это на стороне сервлета:

String test = req.getParameter("textBody"); 

Вот JSP внутри тега формы, которая вызывает функцию по щелчку:

<textarea id="textBody" name="textBody"></textarea>   
<input type="button" onClick="openBrWindowAndSubmit();" value="Click Here to Preview Email"> 

Есть ли обходной путь для этой проблемы?

Я пытался изменить яваскрипт функции:

function openBrWindowAndSubmit() { //v2.0 

    document.forms[0].target = "_blank"; 
    document.getElementById("action").value = "view_template"; 
    var textBodyValue = encodeURIComponent(document.getElementById("textBody").value); 
    alert(textBodyValue); 
    document.forms[0].submit(); 

    var textBodyValue = encodeURIComponent(document.getElementById("textBody").value); 
    alert(textBodyValue); 

    $.ajax({ 
     url: 'http://localhost:8080/restricted/comm/Email', 
     data: textBodyValue, 
    // processData: false, 
    // contentType: false, 
     type: 'POST', 
     success: function(data){ 
     alert(data); 
     } 
    }); 
} 

это может работать? Я получаю неопределенную ошибку при достижении тега $ ajax?

+0

Вы можете использовать библиотеку jQuery и переопределить функцию submit, а затем вручную создать AJAX Post. – user

+0

Не могли бы вы предоставить мне пример? – user2319262

+0

Вы должны включить jquery в ваш .js файл: user

ответ

0

Как идея. Не знаю, правильно ли это;), но вы можете проверить его на странице api jQuery.

$('#idOfTheForm').on('submit', function(e){ 
    e.preventDefault(); 
    data = { key : val , key2 : val2 }; 
    $.ajax({ 
    type: "post", 
    data: data, 
    url : "", 
    success : function(response){ 
        console.log("return code was 200");  
       }, 
    error : function(jqXHR, textStatus, errorThrown){ 
        console.log(errorThrown); 
      } 
    }); 
    return false; 
} 
+0

Привет, спасибо, но это неправильно, можете ли вы попробовать представить пример как из моего кода? – user2319262

+0

@ user2319262 Это ваша работа. Возможно, вы можете попробовать себя и обновить свой вопрос, включая сообщения об ошибках и т. Д. – user

+0

Спасибо, Ive пытался изменить функцию javascript. Пожалуйста, см. Мой вопрос выше – user2319262

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