java - 从 jQuery 或 Ajax 调用带参数的方法

标签 java javascript function parameters

您是否有一些示例代码可以展示如何从 Ajax 调用 java 方法?下面的代码可以调用Java方法:

$.ajax({ type: "POST",
url: "test.java",
data: data,
success : function (data) 
{ // Your return categories in data // Append list options to select2 }
}); 

但是在 URL 中我应该如何传递 URL 以及如何传递方法参数?

最佳答案

Ajax 使用 http 协议(protocol)与服务器进行通信。因此,您只需编写一个 servlet 或 jsp 来处理 Ajax 请求即可。输入使用查询参数传递,您的 servlet/jsp 将其输出作为文本返回。

输出可以采用您决定的任何格式。典型格式是纯文本、xml 或 json。就我个人而言,我更喜欢传回可以由 eval 函数解析的 javascript 对象文字。这使我能够传回非常复杂的数据,其中可能包括字符串、数字、 boolean 值、数组和对象。但解析输出的代码是一个简单的 eval 调用。

下面是一些示例代码。 ajax 调用一个 jsp,它接受 2 个数字作为输入并返回它们的和、差、积和商。这是jsp代码:

<%@page contentType="text/plain"%>
<%

// get the input values
double val1 = 0;
double val2 = 0;
String errorMsg = "";
try {
    val1 = Double.parseDouble(request.getParameter("val1"));
    val2 = Double.parseDouble(request.getParameter("val2"));
} catch (Exception e) {
    errorMsg = "Non-numeric input";
}

// return the javascript object literal
String result = "({";
result += " val1 : " + val1 + ",";
result += " val2 : " + val2 + ",";
result += " sum : " + (val1 + val2) + ",";
result += " difference : " + (val1 - val2) + ",";
result += " product : " + (val1 * val2) + ",";
result += " quotient : " + (val1 / val2) + ",";
result += " errorMsg : \"" + errorMsg + "\"";
result += "})";
out.println(result);
%>

这是一个 javascript 函数,它对上面的 jsp 进行 ajax 调用并处理输出。

function calculate(value1, value2) {
    var dataObj = {val1 : value1, val2 : value2};
    $.ajax({
        url : 'calculator.jsp',
        dataType : 'text',
        data : dataObj,
        cache : false, // guarantees jsp is always called
        success: function(data) {
            var result = eval(data);
            var msg;
            if (result.errorMsg != '') {
                msg = result.errorMsg;
            } else {
                msg = result.val1 + " + " + result.val2 + " = " + result.sum + '\n';
                msg += result.val1 + " - " + result.val2 + " = " + result.difference + '\n';
                msg += result.val1 + " * " + result.val2 + " = " + result.product + '\n';
                msg += result.val1 + " / " + result.val2 + " = " + result.quotient;
            }
            alert(msg);
        }
   });
}

关于java - 从 jQuery 或 Ajax 调用带参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16498490/

相关文章:

php - 在 PHP 中覆盖子类中的函数时更改返回类型?

java - Intellij插件: Intention for xml file that replace an attribute with two custom attribute with different prefix with same value

java - 如果不使用 xml 文件配置,我如何使用 @PostConstruct 和 @PreDestroy?

javascript - 如何访问用户在 Javascript 中提交的表单数据?

javascript - 在 mirth 上用 javascript 迭代并从 xml 中提取数据

python - 如何获取 Python 中所有内置函数的列表

java - 从特定的 userID firebase 回收器适配器获取键值

java - 支持 Long 以外的 RandomAccessFile?

c# - 返回文件或 View 的方法

javascript - 在一个对象中返回两个不同的返回值