Javascript 如何从使用SWT浏览器从ajax请求获取数据的java脚本函数中获取eclipse函数的返回值?

Javascript 如何从使用SWT浏览器从ajax请求获取数据的java脚本函数中获取eclipse函数的返回值?,javascript,java,browser,swt,Javascript,Java,Browser,Swt,我在下面试过 eclipse中有这样一个按钮:java中有一个按钮,它在javascript中触发此函数 然后我在javascript中有了这个函数 但我总是得到空的东西。因为ajax请求需要几秒钟,我的javascript函数返回空对象,而不是等待请求返回数据 如何实现这一点?在处理Ajax调用时,当得到结果时,必须从Javascript代码中调用所谓的BrowserFunction 下面是一个如何定义BrowserFunction以及如何从Javascript调用它的示例: public s

我在下面试过

eclipse中有这样一个按钮:java中有一个按钮,它在javascript中触发此函数

然后我在javascript中有了这个函数

但我总是得到空的东西。因为ajax请求需要几秒钟,我的javascript函数返回空对象,而不是等待请求返回数据


如何实现这一点?

在处理Ajax调用时,当得到结果时,必须从Javascript代码中调用所谓的BrowserFunction

下面是一个如何定义BrowserFunction以及如何从Javascript调用它的示例:

public static void main(String[] args)
{
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());

    Browser browser = new Browser(shell, SWT.NONE);
    browser.setText("<a href='#' onClick='theJavaFunction()'>Click me!</a>");

    new BrowserFunction(browser, "theJavaFunction")
    {
        @Override
        public Object function(Object[] objects)
        {
            System.out.println("Call from Javascript");

            return null;
        }
    };

    shell.pack();
    shell.open();

    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
        {
            display.sleep();
        }
    }
}
此外,Vogella还提供了一个关于浏览器的优秀教程:


谢谢…一些新东西!!!。。实际上,在我的ajax请求中,我必须设置async:false,因为javascript函数在完成请求之前将null返回给java。。谢谢你的信息。。。
function atm.java.webToJavaPerspective(){
  returnData = {};
  //ajaxRequest = some ajaxRequest variable 
  $.when(ajaxRequest).then(function( data, textStatus, jqXHR ) {
    //modify the data
    returnData.textStatus = textStatus;  

    //this return statement should return data to java function
    return returnData;
  });

//this will return empty object
return returnData;
}
public static void main(String[] args)
{
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());

    Browser browser = new Browser(shell, SWT.NONE);
    browser.setText("<a href='#' onClick='theJavaFunction()'>Click me!</a>");

    new BrowserFunction(browser, "theJavaFunction")
    {
        @Override
        public Object function(Object[] objects)
        {
            System.out.println("Call from Javascript");

            return null;
        }
    };

    shell.pack();
    shell.open();

    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
        {
            display.sleep();
        }
    }
}