Jquery Ajax передает данные между двумя формами - PullRequest
0 голосов
/ 14 ноября 2011

У меня есть страница с полем автозаполнения, заполненным ajax, если требуется дополнительное дополнение к автозаполнению, основываясь на том, что пользователь selctind добавляет новое в ('mainForm'). Я выхожу на модальную форму ('subForm') в котором для ввода новых данных, обрабатывать на сервере, используя классический asp через сообщение ajax, я хотел бы затем передать результирующие данные (два поля, возвращенные после вставки в базу данных, locId и locName) обратно в оригинальную форму.

Оригинальная форма

<form method="post" action="default.asp" name="mainForm" id="mainForm">

 .... rest of form ....

  <label for="locName">Location (autocomplete): </label>
  <input type="text" name="locName" id="locName" value="locName"/>
  <label for="locId">Location Id: </label>
  <input type="text" name="locId" id="locId" value="locId"/>
  <input type="submit" name="sub" id="sub"  value="sub"/>
</form>

Модальная форма

<form name="subForm" id="subForm" action="default.asp">
  <label for="nme">Name</label><input type="text" name="nme" id="nme" />
  <label for="pcd">Postcode</label><input type="text" name="pcd" id="pcd" />
  <input type="submit" name="sub2" id="sub2"  value="sub2"/>
</form>

Модальная форма затем обрабатывается на сервере после отправки ajax. Форма отправляется в базу данных и создает два значения (id, name) - я хотел бы передать эти значения обратно в исходную форму в

Jquery до сих пор

$(document).ready(function() {
  var $form = $('#subForm');     
  $form.submit( function() {
    $.ajax({ 
      beforeSend:function(response){$("#locName").val("loading...");},
      cache:false,
      data: $(this).serialize(), 
      type: $(this).attr('method'), 
      url: $(this).attr('action'),

// this is the bit I need help with  

      success:function(response){
        $("#locName").val(response); // populate original form
        $("#locId").val(response); // populate original form
      },
// ---------------------------------------------
      error:function(){alert("error")},
      complete:function(){alert("done");}
    });           
  return false;  
});
});

Заранее спасибо

Steve

1 Ответ

2 голосов
/ 14 ноября 2011

Предполагая, что 'response' - это строка в формате JSON, возвращаемая вашим сервером (например, "{locName:'Groenland', locId:'212'}"):

success:function(response){
    //You need to first parse JSON data:
    var data = jQuery.parseJSON(response);

    //Then fill the original form
    $("#locName").val(data.locName); // populate original form
    $("#locId").val(data.locId); // populate original form
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...