2013-08-04 3 views
2

Я искал все, но не смог найти, как обновить определенное поле ввода через js/jquery/ajax.обновить ввод после ajax submit form

Это мой вклад, изменяющий на каждом посте:

<input type='hidden' id='nonce' name='nonce' value=''> 
<input type='hidden' id='key' name='key' value=''> 

мне нужно после того, как форма АЯКСА представить, чтобы обновить эти входы, любую идею?

Лучшее объяснение: Этот код php генерирует случайные хешированные ключи.

<form action="#"> 

<?php $n->generateFormFields() ?> 

</form> 

я отправить этот сгенерированный ключ через AJAX POST, проблема в том, когда я отправить код на Ajax, ключевые изменения в стороне сервера, поэтому после следующего отправить ключ будет неправильно, потому что не изменилась после ответа ajax, поэтому мне нужно обновить этот код после того, как ajax отправит/обновит введенные выше данные.

редактировать 2:

Я использую этот скрипт:

http://github.com/greatwitenorth/php-nonce

Скрипт работает на POST PHP, но я использую AJAX пост так что мне нужно, чтобы обновить ключи с ajax как-то.

редактировать 3:

Форма например:

<form action="#"> 

<?php $n->generateFormFields() ?> 

</form> 

Функция PHP выше создает HASHED ключи. Эти хэшированные ключи, которые я отправляю через ajax json POST, после отправки их, я проверяю, что ключ такой же, как ключ базы данных. - если ok продолжит, если не показать ошибку. теперь проблема заключается в ключевых изменениях при каждом представлении формы. Поэтому он изменяется, но во входном файле формы он не изменяется, потому что ajax не обновляет страницу, поэтому он будет отправлять то же ключевое значение, которое было раньше.

+0

после успеха ajax просто напишите следующий код. 'jQuery ('# nonce'). Val (''); jQuery ('# key'). Val (''); ' –

+0

нехорошо удалять значение, не обновляя его, как обычный POST при обновлении страницы, мне нужно обновлять только входы – user2635001

+0

. Сделать пустое значение для ввода –

ответ

0

Поскольку вы используете Ajax для возврата значения, сохранить новое значение в varibale сказать new_input,

затем просто использовать,

$("#target_input_id").val(new_input); 

Или ваш .done() функция AJAX вызова должна походить,

.done(function (data) { 
    $("#target_input_id").val(data); //assuming the php file only returns the value for input 
}); 

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

json - Jquery return undefined for multiple values in ajax call

How to return multiple values from JQuery AJAX call?

Теперь .done() будет,

.done(function (data) { 
     $("#key").val(data.key); 
     $("#nonce").val(data.nonce); 
    }); 
+0

его нехорошо, посмотрю, я объясню лучше: у меня есть вход в систему, в моей форме у меня есть функция php, которая генерирует случайные ключи, и я отправляю их через пост ajax и в файл на стороне сервера, если верный код. теперь код меняет каждый пост на стороне сервера, поэтому мне нужно обновить его также после ответа ajax, поэтому мне нужно обновить определенные входы - просто обновить, не принимать новые значения, а не очищать, просто обновить его. – user2635001

+0

Еще не понятно, что вы ищут, это то, как вы обновляете/изменяете входные значения. Смотри сюда. http://jsfiddle.net/TSc8E/48/ –

+0

благодарит вас за помощь, это близко к тому, что мне нужно, но все же не то, что мне нужно, посмотрите, у меня есть форма для входа. в моей форме входа у меня есть скрытый ввод, который генерирует случайные хеш-ключи с помощью функции php. Я посылаю ключ с ajax POST, чтобы разделить файл php и verfiy, если ключ верен. поэтому проблема возникает каждый раз, когда я нажимаю кнопку «Отправить изменения ключа на стороне сервера», а не на входе, поэтому он отправляет старый ключ вместо нового, поэтому мне нужно запустить ajax, чтобы обновить этот ввод до ключа serveride, только когда я делаю обновление на странице, он показывает новый ключ, но ajax не обновляет – user2635001

0

.html файл

<!DOCTYPE html> 

<html> 
<head> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    $("#check").click(function(){ 
     $("#keyvalue").text($("#key").val()); 
    }); 
    $("#submit").click(function(){ 
    var text = $("#text").val(); 
    var key = $("#key").val(); 
     $.ajax({ 
      url: 'trial.php', 
      data: {text: text, key:key}, 
      type: 'POST', 
      dataType: 'json', 
      success: function(data) { 
       if(data.status == "fail"){ 
        $("#status").html(data.message); 
       }else{ 
        $("#status").html(data.message); 
        $("#key").val(data.key); 
        $("#keyvalue").text(''); 
       } 
      } 
     }); 
     return false; 
    }); 
}); 
</script> 
</head> 
<body> 
    <form method="post" action="trial.php" onsubmit="return send_form();"> 
     <input type="text" name="text" id="text"/> 
     <input type="hidden" id="key" name="key" value="xsaigoehf7118191"/> 
     <button id="submit">Send data and get new key</button> 
    </form> 
    <br><br> 
    <div id="status"></div> 
    <br><br> 
    <button id="check">What's current value of key?</button> --------> <span id="keyvalue"></span> 

    <div id="response"></div> 
</body> 

</html> 

.php

<?php 

//You get the form contents here. 

$key = isset($_POST['key']) ? $_POST['key'] : "error"; 
$text = isset($_POST['text']) ? $_POST['text'] : "empty"; 

//Check them if it matches with DB's entry, if doesn't you set $key = "error"; 

if($key=="error"){ 
    $status = "fail"; 
    $message = "There was some error processing your form."; 
    exit; 
} else{ 

    //You generate another random key. 
    $random =''; 
    for ($i = 0; $i < 10; $i++) { 
     $random .= chr(mt_rand(33, 126)); 
    } 

    //Now here in steps save it to your DB. So that when next form is submitted you can match it. 
    //And send back response to html file, where ajax will refresh the key. 
    $status = "success"; 
    $message = " 
    Your form was processed succesfully<br> 
    The text you sent was ".$text.", and the key you sent was ".$key.". 
    The new key sent to you can be seen by pressing the button below, has value, ".$random."<br><br> 
    "; 
    } 

    echo json_encode(array("status" => $status, "message" => $message, "key" => $random)); 

?> 

Надеюсь, это вам поможет.

+0

Большое спасибо потому что вы помогаете, поэтому его все, что у меня есть, но в вашем php, когда я проверяю ключ, у меня есть функция php, которая делает это и просто возвращает текст msg и не генерирует новый ключ. Я покажу вам, что я имею в виду в следующем ответе, снова спасибо вы так много. – user2635001

+0

Хорошо, но предложение, пожалуйста, поработайте над своим английским.;) –

+0

да я знаю :) Я узнаю eng: p – user2635001