gpt4 book ai didi

php - 从 JQuery (Ajax) 调用 PHP SOAP Web 服务

转载 作者:行者123 更新时间:2023-12-01 08:22:48 24 4
gpt4 key购买 nike

我有一个 PHP SOAP Web 服务作为调用跨域 Web 服务的中继。我遇到的问题是从 JavaScript 调用本地 PHP Web 服务方法(使用 JQuery/Ajax)。我想调用我的网络服务中的特定方法;例如“登录帐户”;

我对在 url 中附加参数然后弄清楚要调用哪个方法不感兴趣...这在 .NET (mywebservice.asmx/LoginToAccount") 中非常简单,但无法弄清楚如何让它在 PHP 中工作。

我不断收到“错误请求”的“500 内部服务器错误”:错误请求

这是我的 PHP 代码:

<?php 

function LoginToAccount($email, $passCodeHash) {
//...code calling cross-domain web services
return $jsonEncodedResponse;
}


function CreateAccount($email, $passCodeHash){
//...code calling cross-domain web services
return $jsonEncodedResponse;
}

$server = new SoapServer(null, array('uri' => "http://www.myurl/webservices/"));

$server->addFunction('LoginToAccount');
$server->addFunction('CreateAccount');
$server->handle();
?>

这是我的 JavaScript 代码:

function AjaxCall() {
$.ajax({
type: "POST",
url: "phpRelay.php/LoginToAccount",
data: "{email : 'myEmail@email.com', passCodeHash: '12345'}",
contentType: "application/json",
dataType: "json",
success: succeeded,
error: queryError
});
}

function succeeded(data, textStatus, request) {
var result = $.parseJSON(data.d);

}

function queryError(request, textStatus, errorThrown) {
alert(request.responseText, textStatus + " " + errorThrown);
}

这一切都在同一个域中。谢谢!

最佳答案

您可以使用以下代码替换它,而不是使用 php Soapserver:

echo $data = (function_exists($_SERVER['QUERY_STRING'])) ? json_encode(array('d'=>$_SERVER['QUERY_STRING'](file_get_contents('php://input')))) : 'error: function does not exists';

它的作用是使用 query_string 作为函数名称。它首先检查该函数是否存在,如果不存在,则打印错误,但如果 et 存在,它将以字符串格式调用以发布的数据作为条件的函数。最后将函数返回的数据打印为json数组,结果集为d。

所以你的 JavaScript 应该如下所示(注意 url 调用应该在函数之前使用 ? 而不是/):

function AjaxCall() {
$.ajax({
type: "POST",
url: "phpRelay.php?LoginToAccount",
data: "{email : 'myEmail@email.com', passCodeHash: '12345'}",
contentType: "application/json",
dataType: "json",
success: succeeded,
error: queryError
});
}

function succeeded(data, textStatus, request) {
var result = $.parseJSON(data.d);

}

function queryError(request, textStatus, errorThrown) {
alert(request.responseText, textStatus + " " + errorThrown);
}

希望这可以帮助你!我知道发布这个有点晚了,但如果还有其他人需要这样的东西,我就会发布它!我需要它,但找不到这样的解决方案,所以我必须自己制定解决方案。

干杯c_bb

关于php - 从 JQuery (Ajax) 调用 PHP SOAP Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6255245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com