2013-07-08 85 views
3

我試圖將多個值返回給jqueryAjax成功,但未能如此。這個我到目前爲止所做的......如何將多個值返回給jQuery.Ajax成功函數

String emp = request.getParameter("ID"); 
    ArrayList<String> al = new ArrayList(); 
    al=ur.editLeave(emp); 
    String cl = al.get(0); 
    out.print(cl); 
    out.print(al.get(1)); 
    out.print(al.get(2)); 

從這個jsp頁面我嘗試返回3個值。

$.ajax({ 
    type: "GET", 
    data: 'ID=' + idel, 
    async: false, 
    url: "ForleaveMaster.jsp?Eleave=l", 
    success: function(cl, ml, ot) { 
     alert(cl, ml, ot); 
     $('input[id=ELM_CL]').val($.trim(cl)); 
     $('input[id=ELM_ML]').val($.trim(cl)); 
     $('input[id=ELM_OT]').val($.trim(cl)); 
    }, 
    error: function() {} 
}); 

請幫我一把。

+0

你可以合併一些分隔符的數據和在ajax響應中解析它,或者將它作爲json發送並在你的ajax響應中解析json。 –

+0

您正在將輸入字段全部設置爲相同的值$('input [id = ELM_OT]')。val($。trim(cl));所有的都將會是cl。 – JanR

+0

您的成功函數只能有1個參數:如果您需要多個值,請將這些值包裝在使用JSON進行串聯的服務器端對象中,以便返回1個字符串,然後將其解析回對象客戶端,您可以從中檢索您需要的不同值。 – frenchie

回答

4

您返回的所有內容都將作爲第一個參數傳遞給您的函數。

$.ajax({ 
    type: "GET", 
    data: 'ID=' + idel, 
    async: false, 
    url: "ForleaveMaster.jsp?Eleave=l", 
    success: function(data) { 
     var array_data = String(data).split("\n"); 
     var cl = array_data[0], 
      mt = array_data[1], 
      ot = array_data[2]; 
     alert(cl,ml,ot); 
     $('input[id=ELM_CL]').val($.trim(cl)); 
     $('input[id=ELM_ML]').val($.trim(cl)); 
     $('input[id=ELM_OT]').val($.trim(cl)); 
    }, 
    error: function() {       
    } 
}); 
+0

我對'data.spit()'方法很感興趣! – 2013-07-08 05:14:58

+0

我是否必須下載任何插件才能使用data.split函數。因爲在使用這個時我得到了一個錯誤:data.spit不是一個函數 – Subodh

+0

對不起,'split',當然:) – mishik

0

我假設你想將值設置爲表單輸入?在這種情況下,將您的成功取代爲:

success: function(cl,ml,ot) { alert(cl,ml,ot); 
     $('input[id=ELM_CL]').val($.trim(cl)); 
     $('input[id=ELM_ML]').val($.trim(ml)); 
     $('input[id=ELM_OT]').val($.trim(ot)); 
    }, 

您正在將所有字段設置爲相同的cl值。

+0

我做到了,但它不起作用 – Subodh

2

你的方法絕對不行:你只能返回一個'item'。訣竅是把所有的價值都放在那個項目中。將您的響應編碼爲JSON字符串(對不起 - 在JSP中不能提供幫助),但應該看起來像這樣:

{「cl」:「1」,「dl」:「2」, 「CL」: 「3」}

然後修改您的AJAX功能:

$.ajax({ 
     type: "GET", 
     data: 'ID=' + idel, 
     dataType:'json' 
     async: false, 
     url: "ForleaveMaster.jsp?Eleave=l", 
     success: function(data) { 
      alert(data.cl,data.ml,data.ot); 
      $('input[id=ELM_CL]').val($.trim(data.cl)); 
      $('input[id=ELM_ML]').val($.trim(data.ml)); 
      $('input[id=ELM_OT]').val($.trim(data.ot)); 
     }, 
     error: function() {       
     } 
    }); 

我會離開async設置爲true或在服務器響應您的瀏覽器將凍結。使用Json的優點是您可以添加其他數據或更改順序而不會破壞您的Javascript。

+0

thnks但米仍然努力克服這一點。 – Subodh

0

大家都已經知道,幫助編程的最好方法就是向他們展示實例。所以這是我的一部分。

PHP文件和響應

<?php 

require_once('../../../wp-load.php'); 

$cs_confID = $_POST['cs_confID']; 

$cs_date = $_POST['cs_date']; 

$cs_obj = get_conf_id_for_insert($cs_date, $cs_confID); 

$json_cs = array();  

if(count($cs_obj) == 1)  
{ 
    $json_cs = array('cs_id'=>$cs_obj[0]->cs_id,'cs_date'=>$cs_obj[0]->cs_date); //Make array of files  
    echo json_encode($json_cs); //Encode json  
}  

else  
{  
    echo '<p style="color:red">Status:Error. Please contact our support for further help!</p>';  
} 
?> 

HTML和jQuery

$.ajax({ url: '../wp-content/themes/rirads-2012-child-theme/insert_conference_schedules.php', 

data: {cs_date:$("#c_date").val(),cs_confID: $("#conf").val()}, 
beforeSend: function(){ $("#loaderAjax").show(); }, 
type: 'post', 
success: function(output) 
{ 
$("#loaderAjax").hide(); 
var obj = jQuery.parseJSON(output); //decode JSON response 

$("#cs_id").val(obj.cs_id); //Fill the value of current cs_id into input field cs_id 

$("#cs_date").val(obj.cs_date); //Fill the value of current cs_date into input field cs_date 

//code goes on... 

希望它會幫助你.. :)

相關問題