将嵌套数组从PHP传递到Javaservlet


Passing a nested array from PHP to Java servlet

我有一个数组$tag,我使用它打印:

foreach($tags as $t) {
                echo $t['token'] . "/" . $t['tag'] .  " ";
        }

如何将这个$标记传递给Java servlet,以便在Java程序中使用它,就像在PHP脚本中使用foreach$t['token']$t['tag']一样?

我假设这必须通过使用POST方法来完成,是否也可以使用GET?

更新
得到一个json_array:

$js_array = json_encode($tags);
echo "var javascript_array = ". $js_array . ";'n";

哪个返回:

var javascript_array = [{"token":"test","tag":"NN"},{"token":"1","tag":"NN"}];

我正试图通过使用将其传递给servlet

<script src="http://code.jquery.com/jquery-1.10.1.min.js">
$( document ).ready(function() {
    alert('ok');
                $.ajax({
                    url : "http://localhost:8080/first/SPARQL",
                    type: "POST",
                    data: $js_array,                  
                    dataType: "json", 
                    async: false,
                    success: function (){
                        alert( "succes");},
                        error: function(){
                            alert("false");
                        }
                });
});
</script>

但是,它既不返回"successs"也不返回"false"。它显示"ok"警报。附言:我正在通过Eclipse和Tomcat8运行javaservlet。php文件在我的Wamp本地主机上。我可以在浏览器中访问url
此外,我似乎不能在PHP中创建的javascript中使用$js_array,它说它没有设置。

更新:在铬控制台上显示:

    XMLHttpRequest cannot load http://localhost:8080/first/SPARQL.
 No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://localhost' is therefore not allowed access.
jquery-1.10.1.min.js:6 x.ajaxTransport.sendjquery-1.10.1.min.js:6 x.extend.ajaxresultaat.php?nlquery=Dit+is+een+eerste+tekst:20 
(anonymous function)jquery-1.10.1.min.js:4 
x.Callbacks.cjquery-1.10.1.min.js:4 
x.Callbacks.p.fireWithjquery-1.10.1.min.js:4 x.extend.readyjquery-1.10.1.min.js:4 q

在servlet中添加了:response.addHeader("Access-Control-Allow-Origin", "*");。错误现在已经消失,但它仍然响应为false,因为我无法访问javascript中的PHP$js_array?表示$js_array未设置。

最简单的方法是将其序列化为JSON,然后在servlet中反序列化。在PHP中,使用json_encode()对Java端上的任何json库进行编码和解码

由于您已经在客户端定义了javascript javascript_array变量

$js_array = json_encode($tags);
echo "var javascript_array = ". $js_array . ";'n";

使用它而不是服务器端变量:

        $.ajax({
            url : "http://localhost:8080/first/SPARQL",
            type: "POST",
            data: javascript_array, // updated here                 
            dataType: "json", 
            async: false,
            success: function (){
                alert( "succes");},
                error: function(){
                    alert("false");
                }
        });

如果您想在JS对象中放入PHP变量值,请按照下面提到的方式使用它。

发件人:

 data: $js_array, 

收件人:

data: JSON.stringify(<?php echo $js_array; ?>),