我有一个数组$标签,我用它打印:
foreach($tags as $t) {
echo $t['token'] . "/" . $t['tag'] . " ";
}
如何将此$标记传递给Java servlet,以便在Java程序中使用foreach
和$t['token']
以及$t['tag']
,就像在PHP脚本中一样使用它?
我假设必须使用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>
然而,它既不会返回&#34;成功&#34;或&#34;假&#34;。它显示了&#34; ok&#34;警报。 附:我通过Eclipse和Tomcat 8运行java servlet.php文件在我的Wamp localhost上。我可以在浏览器中访问该网址 此外,我似乎无法在PHP中使用javascript中使用$ js_array,它说它没有设置。
更新:在Chrome控制台中,它说:
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", "*");
。
错误现在消失了,但它仍然响应错误,因为我无法访问javascript中的PHP $ js_array?说没有设置$ js_array。
答案 0 :(得分:6)
最简单的方法是将其序列化为JSON并在servlet中反序列化。在PHP中,使用json_encode()对Java端的任何JSON库进行编码和解码
答案 1 :(得分:0)
由于您已在客户端
定义了javascriptjavascript_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");
}
});
答案 2 :(得分:0)
如果要在JS对象中放置PHP变量值,请按照下面的说明使用它。
发件人:强>
data: $js_array,
要强>
data: JSON.stringify(<?php echo $js_array; ?>),