如何将多个值返回给jQuery.Ajax成功函数

时间:2013-07-08 05:01:48

标签: jquery

我正在尝试将多个值返回到jqueryAjax成功,但未能这样做。这就是我到目前为止所做的......

 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() {}
});

请帮帮我。

4 个答案:

答案 0 :(得分: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() {                        
    }
});

答案 1 :(得分:2)

您的方法肯定不会起作用:您只能返回一个“项目”。诀窍是将所有值放在该项中。将您的响应编码为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。

答案 2 :(得分: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值。

答案 3 :(得分: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...

希望它会对你有所帮助.. :)