2017-08-15 152 views
1

我有一个按钮,当我点击它时,它会从我的数据库中获取数据,并根据ID将其显示在我的文本区域中。如何从jQuery onclick函数的Ajax函数中获取值?

JQuery的

$('#verifyBtn').on("click", function() { 
    var exeOutput = checkOutput(); 
    $("outputArea").html(exeOutput); 
}); 

function checkOutput(){ 
    var exNo = parseInt($('#selectExercise').val()); 
    dataString = "exNo=" + exNo; 
    $("#result").empty(); 
    getOutput(dataString, true); 
} 

function getOutput(dataStr, flag) { 
    $.ajax({ 
     url: "/FYP/WebExerciseByOutput", 
     data: dataStr, 
     success: function (data) { 
     return data; 
     }, 
     error : function (xhr,textStatus,errorThrown){ 
      console.log("Something is wrong with ajax call."+ xhr); 
     } 
    }); 
} 

通过我的servlet从我的数据库中获取。

的Servlet

exercisesModel outputModel = null; 
try { 
    DBConnection db = new DBConnection(); 
    outputModel = db.getExerciseById(request.getParameter("exNo")); 
} catch (Exception e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
response.getWriter().append(outputModel.getExpOutput()); 

编辑:一旦点击,我认为有数据,但我的文字区域不显示它。

回答

-1

因为你正在做的异步调用使用return data;你不能返回立即响应,而是你可以通过选择那么当成功调用回调函数将结果赋予您的输出元素:

<script> 
    $('#verifyBtn').on("click", function() { 
     checkOutput("outputArea"); 
    }); 

    function checkOutput(output_selector){ 
     var exNo = parseInt($('#selectExercise').val()); 
     dataString = "exNo=" + exNo; 
     $("#result").empty(); 

     getOutput(dataString, true, output_selector); 
    } 

    function getOutput(dataStr, flag, output_selector) { 
     $.ajax({ 
      url: "/FYP/WebExerciseByOutput", 
      data: dataStr, 
      success: function (data) { 
       $(output_selector).html(data); 
      }, 
      error : function (xhr,textStatus,errorThrown){ 
       console.log("Something is wrong with ajax call."+ xhr); 
      } 
     }); 
    } 
</script> 

注:不使用通过flag参数。

希望这会有所帮助。

+0

标志能够删除?我的textarea不显示数据... –

+0

不确定你的意思,但因为你没有使用它,所以你可以删除它..你有没有尝试过建议的解决方案? –

+0

我试过了,它不工作,试图理解添加到帖子的链接 –

-1

这这里块:

function checkOutput(){ 
var exNo = parseInt($('#selectExercise').val()); 
    dataString = "exNo=" + exNo; 
    $("#result").empty(); 
    getOutput(dataString, true); 

    } 

尝试添加returngetOutput线

function checkOutput(){ 
var exNo = parseInt($('#selectExercise').val()); 
    dataString = "exNo=" + exNo; 
    $("#result").empty(); 
    return getOutput(dataString, true); 

    } 
-1

通过我想你指的是调用的结果。你可以在成功处理程序的参数中找到它。

success: function (data) { 
    //This is your result from server. 
    console.log(data); 
    return data; 
} 

看看你的JS控制台来查看结果。