【问题标题】:Calling PHP webservice method from Javascript/jQuery从 Javascript/jQuery 调用 PHP webservice 方法
【发布时间】:2014-11-25 08:11:46
【问题描述】:

我已经创建了一个 PHP Web 服务方法

public function import_external_xml($importXml)

我想允许客户端通过我的网络服务方法上传 xml。我的 Web 服务与客户端不在同一个域中。客户有一个带有按钮的网页,他想在其中编写一些 javascript/jQuery 以通过我的 Web 服务方法上传 xml。

他怎么能这样?

server.php中的Web服务方法:

public function import_external_xml($importXml)
{ 
    echo 'import_external_xml';
    exit;
}

【问题讨论】:

  • 使用 ajax 并从 ajax 调用函数,通过 ajax 发布数据并将其作为函数参数
  • 嗨阿伦,你能举个例子吗

标签: javascript jquery


【解决方案1】:

我使用 Ruby on Rails 做了同样的事情。但是正在发送不是 xml 格式的数据。 正如您所说的一件重要的事情,您的网络服务不在同一个域上,您将不得不处理 CORS。你可以在这里了解 CORS https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

你可以参考这个帖子JQuery JSON Calls To PHP WebService Always Runs "Error" Callback

function callPhpAPI(){
  var dataa = {"your_data":youdata};

  $.ajax({
            url : yourwebserviceurl,
            type: 'POST',
            data : JSON.stringify(dataa),
            contentType : "application/json",
            success:function(data)
            {
                if(data){ 
                  alert(data);   
                  //console.log("Data from Server"+JSON.stringify(data));
                }
                else{
                  console.log("Data is empty");
                } 
            },
            error: function(xhr) {
                alert('Error!  Status = ' + xhr.status + " Message = " + xhr.statusText);
                //console.log('Error!  Status = ' + xhr.status + " Message = " +  xhr.statusText);
            }
        });
});

【讨论】:

  • 嗨,萨钦,感谢您的回复。但是他怎么能用 import_external_xml 方法呢?
  • 我不明白你的问题,但我想你是想问如何调用 php 函数 import_external_xml,这在链接 stackoverflow.com/questions/20685949/… 中有很好的解释
  • @SachinKadam 他试图通过 ajax 将 xml 传递给他的 php 函数
  • 是的,我明白了,我的回复是“但是他怎么能使用 import_external_xml 方法?”以上。
  • 谢谢阿伦。我很抱歉我的英语不好。但是,是的,客户希望通过我的 Web 服务发送 XML。
【解决方案2】:

你可以像这样使用 ajax 调用你的 php 函数

xmlDocument = $("<wrap/>").append(xmlDocument).html();
xmlDocument = encodeURIComponent(xmlDocument);

然后是ajax

jQuery.ajax({
    type: "POST",
    url: 'your_functions_address.php',
       processData     :   false,
   contentType     :   'text/xml',
     data            :   xmlDocument,

    success: function (obj, textstatus) {
                  if( !('error' in obj) ) {
                      yourVariable = obj.result;
                  }
                  else {
                      console.log(obj.error);
                  }
            }
});

我想你想通过这个 ajax 帖子传递 xml,然后你可以参考这个讨论

post xml

也检查this

【讨论】:

  • 如果我理解它比'your_function_adresss.php' 将是'mydomain/server.php' 而'add' 将是'import_external_xml'?
  • 检查我的答案中的超链接
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-06
  • 1970-01-01
  • 1970-01-01
  • 2012-12-21
  • 2012-07-16
  • 2012-06-24
相关资源
最近更新 更多