我需要在javascript中构建一个php简单服务器和一个可以访问它的小脚本。问题是我能找到的所有例子都不起作用。我只需要没有数据库的基本结构。只有回归" hello world"字符串到javascript客户端或任何工作示例(我可以从那一点工作)。我不知道使用Soap,nuSoap还是Rest服务器是否更好。
添加的示例:
我有这个ws:
<?php
require_once('lib/nusoap.php');
class predictiveUrlsPreloadService {
public function getUrls($type) {
switch ($type) {
case 'GA':
return 'Google Analytics code';
break;
case 'AA':
return 'Adobe Analytics code';
break;
default:
break;
}
}
}
$server = new soap_server();
$server->configureWSDL("foodservice", "http://www.greenacorn-websolutions.com/foodservice");
$server->register("predictiveUrlsPreloadService.getUrls",
array("type" => "xsd:string"),
array("return" => "xsd:string"),
"http://localhost/predictiveUrlsPreloadService/service.php",
"http://localhost/predictiveUrlsPreloadService/service.php#getUrls",
"rpc",
"encoded",
"Descripci");
@$server->service(file_get_contents("php://input"));
这个PHP客户端工作:
<script
src="https://code.jquery.com/jquery-3.2.1.min.js"
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
crossorigin="anonymous">
</script>
<?php
require_once('lib/nusoap.php');
$wsdl = "http://localhost/predictiveUrlsPreloadService/wsdl.wsdl";
$client = new nusoap_client($wsdl, true);
$error = $client->getError();
if ($error) {
print_r($error);
}
$result = $client->call("predictiveUrlsPreloadService.getUrls", array("type" => 'GA'));
if ($client->fault) {
print_r($result);
} else {
$error = $client->getError();
if ($error) {
print_r($error);
} else {
echo $result;
}
}
?>
所有这一切都与它的wsdl。我只需要知道如何使用javascript或ajax进行调用:
$.ajax({
url: 'http://localhost/predictiveUrlsPreloadService/service.php',
type: "predictiveUrlsPreloadService.getUrls",
data: {
'type' : 'AA'
},
success: function (response) {
console.dir(response);
}
});
但它只返回ws信息。我怎么能这样做?
答案 0 :(得分:0)
这比我想象的要简单。
这是PHP中的nusoap服务器:
<?php
require_once('nusoap.php');
$server = new soap_server();
$server->configureWSDL("PredictiveUrlPreloadXML", "urn:PredictiveUrlPreloadXMLwsdl");
$server->wsdl->schemaTargetNamespace = "urn:PredictiveUrlPreloadXMLwsdl";
function getUrls($type) {
switch ($type) {
case 'GA':
return 'GA code';
break;
case 'AA':
return 'AA code';
break;
default:
return null;
break;
}
}
$server->register(
'getUrls',
array(
'type' => 'xsd:string',
),
array(
'return' => 'xsd:string'
),
'urn:PredictiveUrlPreloadXMLwsdl',
'urn:PredictiveUrlPreloadXMLwsdl#getUrls',
'rpc',
'encoded',
'Desc'
);
@$server->service(file_get_contents("php://input"));
?>
这是javascript客户端:
<script>
var soapMessage =
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'+
'<soap:Body>'+
'<getUrls xmlns="urn:PredictiveUrlPreloadXMLwsdl">'+
'<type>GA</type>'+
'</getUrls>'+
'</soap:Body>'+
'</soap:Envelope>';
$.ajax({
url: "http://localhost/predictive_url_preload/ws.php",
type: "POST",
dataType: "xml",
contentType: "text/xml",
data: soapMessage,
success: function(data, status, req) {
//TODO
},
error: function (data, status, req) {
console.log(req);
}
});
</script>