3

我试图为 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

4 回答 4

5

您返回的所有内容都作为第一个参数传递给您的函数。

$.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() {                        
    }
});
于 2013-07-08T05:07:56.040 回答
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 的情况下添加其他数据或更改顺序。

于 2013-07-08T05:12:21.950 回答
1

众所周知,帮助某人进行编程的最好方法是向他们展示示例。所以这是我的一部分。

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...

希望它会帮助你.. :)

于 2014-01-10T10:44:46.577 回答
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 值。

于 2013-07-08T05:06:00.733 回答