通过Phonegap / Ajax将XML数据发布到PHP API

时间:2014-01-07 15:12:50

标签: php ajax xml cordova jsonp

我一直致力于构建一个应用程序,通过phonegap应用程序检查服务器的状态。问题是客户端没有授予我访问现有API或服务器的权限。他给我的唯一信息是:“例如,您可以通过jQuery向xmlUserApi.php发送一个名为”request“的请求。”

据我了解,我们正在以格式

发送一些XML
<xmlApi>
  <action> getServerList </action>
   <auth></auth>
</xmlApi>

例如,从中返回所有服务器的XML列表。

每当我尝试将此数据发布到PHP(xmlUserApi.php)时,都不会返回任何内容。我觉得浏览PHP会很有帮助,但是,客户端不会让我这么做。

非常感谢任何帮助/想法

修改

我在检查员中得到的回应是:

<form action=xmlUserApi.php method=post>
<textarea name=request cols=120 rows=30></textarea>
<input type=submit value=Request></form><br><br>86.135.213.213

1 个答案:

答案 0 :(得分:0)

您的客户建议以编程方式复制用户在其提供的地址填写表单的操作。

要做到这一点,试试这个:

var xmlData = '<xmlApi><action> getServerList </action><auth>xxxxxx</auth></xmlApi>';
var serverPath = 'http://some.com/path/';
var requestPath = 'xmlUserApi.php';
var request = $.ajax({
    url: requestPath,
    type: 'POST',
    dataType: 'jsonp',
    data: { request: xmlData }
});
request.done(function(data) {
    /process data
});
request.fail(function(jqXHR, textStatus) {
    alert(textStatus);
});

//将原始答案留在这里

“例如,您可以通过jQuery向名为”request“的xmlUserApi.php发送POST请求。”

不确定“命名”请求“是什么意思”,但是使用jQuery你会这样做:

var serverPath: 'http://their.server.tld/path/';
var authToken: 'sometoken';
$.post(serverPath + 'xmlUserApi.php', { action: 'getServerList', auth: authToken },
   function(data) {
      //whatever you want to do with the return goes here
   }
);

与API的连接可能存在问题,有时会传递其他参数有助于此,您可以尝试:

var serverPath = 'http://their.server.tld/path/';
var requestPath = serverPath + 'xmlUserApi.php';
var authToken = 'sometoken';
$.ajax({
    url: requestPath,
    type: 'POST',
    dataType: 'jsonp',
    data: { action: 'getServerList', auth: authToken }
}).done(function(data) {
    //processing here
}).fail(function(jqXHR, textStatus) {
    alert(textStatus);
});