2016-04-12 44 views
1

我有六個字段和一個搜索按鈕的搜索表單。當用戶填寫表單deatails並單擊搜索按鈕時,我需要使用jQuery ajax將表單字段值作爲json發送到服務器。如何獲取表單字段值並將其作爲json使用ajax發送到服務器jquery

然後服務器將發送搜索值並返回響應,然後我需要在ui中填充這些valuse。我需要爲jquery ajax提供示例UI代碼。請任何人都可以幫忙嗎?下面 是我的HTML表單

<form name="NAME" id="customerDetailSearchForm" action=""> 
    <fieldset> 
    <legend>Search Contact</legend> 
    <table width="100%" cellpadding="0" cellspacing="0" class="vzuui-detailpanel"> 
     <tr> 
      <td><label>Name :</label><input type="text" value="" /></td> 
      <td><label>City :</label><input type="text" value="" /></td> 
      <td><label>Phone :</label><input type="text" value="" /></td> 
     </tr> 
     <tr> 
      <td><label>Address :</label><input type="text" value="" /></td> 
      <td><label>State Prov :</label><input type="text" value="" /></td> 
      <td><label>Email :</label><input type="text" value="" /></td> 
     </tr> 
    </table> 
    </fieldset> 
    <button class="vzuui-btn-red-active closeedit" type="button" id="search">Search</button> 

+0

'$( '#customerDetailSearchForm')。序列化()'會抓住所有的'data'從'form' – Rayon

+0

jQuery的。 com將 – pathfinder

+0

$('#customerDetailSearchForm')。serialize()存儲到單個變量併發送到服務器 –

回答

0

所有你需要的,因爲我們將使用jQuery serializeArray() Methodcreates an array of objects (name and value) by serializing form values.

現在改變你的HTML表單代碼包含在文本框name屬性像下面

<form name="NAME" id="customerDetailSearchForm" action=""> 
    <fieldset> 
    <legend>Search Contact</legend> 
    <table width="100%" cellpadding="0" cellspacing="0" class="vzuui-detailpanel"> 
     <tr> 
      <td><label>Name :</label><input type="text" value="" name="name" /></td> 
      <td><label>City :</label><input type="text" value="" name="city" /></td> 
      <td><label>Phone :</label><input type="text" value="" name="phone" /></td> 
     </tr> 
     <tr> 
      <td><label>Address :</label><input type="text" value="" name="address" /></td> 
      <td><label>State Prov :</label><input type="text" value="" name="state" /></td> 
      <td><label>Email :</label><input type="text" value="" name="email" /></td> 
     </tr> 
    </table> 
    </fieldset> 
    <button class="vzuui-btn-red-active closeedit" type="button" id="search">Search</button> 

這是必需的一jQuery部分從表單中形成JSON數據並進行AJAX調用。

<script type="text/javascript"> 
$(document).ready(function(){ 
    $("#search").click(function(){ 

    var frm = $("customerDetailSearchForm").serializeArray(); 
     var obj = {}; 
     for (var a = 0; a < frm.length; a++) { 
     obj[frm[a].name] = frm[a].value; 
     } 
     var jsonData = JSON.stringify(obj); 

    $.ajax({ 
     type: 'GET', 
     url: 'http://example.com', 
     data: jsonData , 
     dataType: 'json', 
     success: function (data) { 
      // add result to UI code over here 
     } 
    }); 
    }); 
}); 
</script> 

EDIT

上面JavaScript代碼段編輯,以產生適當的JSON值

+0

嗨Aniket, 我已經實施了烏爾代碼,但即時通訊錯誤。 當我使用var jsonData時,json值也不能正確顯示jsonData = JSON.stringify(frm); 控制檯錯誤: http://url.com?[{"name":"name","value":"jhon"},{"name":"city","value":"us「} { 「名」: 「手機」, 「值」: 「9897896581」},{ 「名」: 「地址」, 「值」: 「Colianielna」},{ 「名」: 「狀態」, 「價值」: 「Ustance」},{「name」:「email」,「value」:「[email protected]」}] 405(方法不允許) –

+0

你好Ganesh,我共享的代碼使用GET方法..你可以看到我提到它是類型:'GET'。 HTTP 405錯誤意味着你使用了錯誤的方法,所以我假定你正在調用的服務使用POST方法。確認相同並相應地使用適當的方法。至於不正確的JSON值檢查我編輯的答案 –

+0

嗨Aniket,我做了這些變化,現在它工作正常。感謝您幫助我解決這個問題。 –

0

在這裏你去

Convert form data to JavaScript object with jQuery

但是你必須添加name屬性爲每個輸入元素之前。

因此該名稱將是您的JSON鍵,然後在框中的數據將是關鍵的值,如下

<input name='username' value='' />

將成爲

{"username": "john"}

JHON的輸入值在輸入框中。

**編輯(Ajax代碼)**

$(function() { 
    $('#customerDetailSearchForm').submit(function() { 
    $.post("//your URL here",JSON.stringify($('#customerDetailSearchForm').serializeObject()), function(result){ 

     alert("Data posted successfully!!"); 

    }); 
    }); 
}); 

或更換以下行,如果你沒有在提交表單按鈕

$('#customerDetailSearchForm').submit(function() { 

$('#search').click(function() { 
+0

好的。我需要樣本ajax代碼擊中服務。可以ü給我的樣品阿賈克斯代碼打到服務 –

+0

在帖子中修正,試試吧 – kakurala

+0

大家好。我使用了@Aniket代碼。現在它工作正常。謝謝所有 –

0

這裏簡單的Ajax代碼,我在Asp.net中使用MVC 我想這會幫助你,

$.ajax({ 
       beforeSend: function (xhr) { 
        AjaxRequestStart(); 
       }, 
       error: function (result) { 
            }, 
       complete: function() { 
        AjaxRequestFinish(); 
       }, 
       url: '@Url.Content("~/Project/SaveProject")', 
       type: 'POST', 
       data: $('#frmAddProject').serialize(), 
       success: function (result) { 

       } 
      }); 
0

在這裏,我與@Aniket同意。爲每種輸入類型首先添加名稱。

<form name="NAME" id="customerDetailSearchForm" action="your_url"> 
    <fieldset> 
    <legend>Search Contact</legend> 
    <table width="100%" cellpadding="0" cellspacing="0" class="vzuui-detailpanel"> 
     <tr> 
      <td><label>Name :</label><input type="text" value="" name="name" /></td> 
      <td><label>City :</label><input type="text" value="" name="city" /></td> 
      <td><label>Phone :</label><input type="text" value="" name="phone" /></td> 
     </tr> 
     <tr> 
      <td><label>Address :</label><input type="text" value="" name="address" /></td> 
      <td><label>State Prov :</label><input type="text" value="" name="state" /></td> 
      <td><label>Email :</label><input type="text" value="" name="email" /></td> 
     </tr> 
    </table> 
    </fieldset> 
    <button class="vzuui-btn-red-active closeedit" onclick="_submit();" type="button" id="search">Search</button> 

對於調用ajax,你可以使用它。

function _submit{ 
     $.ajax({ 
       type: 'POST', 
       dataType: 'json', 
       url: 'your_url', 
       data: $("#customerDetailSearchForm").serialize(), 
       success: function(responseData, textStatus) { 
        // you implementation logic here 
       }, 
       complete: function(textStatus) { 

       }, 
       error: function(responseData) 
       { 

       } 
      }); 
     } 
0

您可以參考下面的示例Ajax調用的形式提交

 

    $("#customerDetailSearchForm").submit(function(e) { 

      var postData = $('#conatctUs').serializeArray(); 
      var formURL = $('#conatctUs').attr("action"); 
      var formName = $('#conatctUs').attr('name'); 

      $.ajax({ 
        url : formURL, 
        type: "POST", 
        data : postData, 
        success:function(data) 
        { 
         if(data.status){ 
          console.log(data); 
         } 
        }, 
        error: function(jqXHR, textStatus, errorThrown) 
        { 

        } 


      e.preventDefault(); 
    }); 

相關問題