【问题标题】:Call an operation in PHP SOAP web service from Android Phonegap从 Android Phonegap 调用 PHP SOAP Web 服务中的操作
【发布时间】:2016-04-14 14:32:51
【问题描述】:

在我的 PHP Web 服务中,我有一个函数:

function create_promo($codeBarre, $designation, $dateDebut, $dateFin, $prix, $TVA)
{
    $db = new PDO('mysql:host=localhost;dbname=phone', 'root', '');
    $req = $db->prepare("insert into promotion 
                           values
                             (:codeBarre, :designation, :dateDebut, :dateFin, :prix, :TVA)");
    $req->execute(array(':codeBarre'=>$codeBarre, ':designation'=>$designation,
                        ':dateDebut'=>date("Y-m-d", strtotime($dateDebut)),
                        ':dateFin'=>date("Y-m-d", strtotime($dateFin)), 
                        ':prix'=>$prix, ':TVA'=>$TVA));  
    return "promotion créer";    
}

这个函数在 C:\Wamp\WWW 下。

我创建了我的 Cordova 项目并编写了以下代码:

  <script type="text/javascript" src="js/jquery.js"></script>
  <title>Hello World</title>
  <script type="text/javascript">

    $(document).ready(function() {
        $("#Ajouter").click(function() {
            var codeBarre = $("#codeBarre").val();
            var designation = $("#designation").val();
            var dateDebut = $("#dateDebut").val();
            var dateFin = $("#dateFin").val();
            var prix = $("#prix").val();
            var TVA = $("#TVA").val();
            var dataString = "codeBarre=" + codeBarre + "&designation=" + designation + "&dateDebut=" + dateDebut + "&dateFin=" + dateFin + "&prix=" + prix + "&TVA=" + TVA + "&Ajouter=";
            $.ajax({
                url:"https://192.168.1.12/testphone/server.php//create_promo",
                type:"POST",
                data:dataString,
                crossDomain:true,
                cache:false,
                beforeSend: function(){ $("#insert").val('Connecting...');},
                success: function(data){
                    if (data=="ok")
                    {
                        alert("inserted");
                        $("#Ajouter").val('submit');
                    }
                    else if (data=="error")
                    {
                        alert("error");
                    }
                }
            });
            return false;
        });
    });
  </script>
</head>
<body>

  <!--<div id="deviceready" class="blink">
  <p class="event listening">Connecting to Device</p>
  <p class="event received">Device is Ready</p>-->
  <form method="post">
    <table>
      <tr>
        <td>Code Barre:</td>
        <td> <input type="text" id="codeBarre"></td>
      </tr>
      <tr>
        <td>Designation:</td>
        <td> <input type="text" id="designation"></td>
      </tr>
      <tr>
        <td>Date Debut:</td>
        <td> <input type="date" id="dateDebut"></td>
      </tr>
      <tr>
        <td>Date fin:</td>
        <td><input type="date" id="dateFin"></td>
      </tr>
      <tr>
        <td>Prix:</td>
        <td> <input type="number" id="prix" step="any"></td>
      </tr>
      <tr>
        <td>TVA:</td>
        <td> <input type="number" id="TVA"></td>
      </tr>
      <tr>

        <td> <input type="button" id="Ajouter" value="Ajouter"></td>
      </tr>
    </table>
  </form>        

  <script type="text/javascript" src="cordova.js"></script>
  <script type="text/javascript" src="js/index.js"></script>
</body>

Cordova 项目位于 C: 目录中。 警报消息未显示;如何显示错误?

【问题讨论】:

  • 您正在浏览器中测试代码?
  • 不,我在模拟器中测试

标签: php android cordova soap


【解决方案1】:

这可能是因为设备就绪时脚本没有加载,尝试更改

$(document).ready(function(){
...

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady(){
    $("#Ajouter").click(function() {
    //.... rest of code

}

添加错误函数以捕获请求失败

$.ajax({
            url:"https://192.168.1.12/testphone/server.php//create_promo",
            type:"POST",
            data:dataString,
            crossDomain:true, 
            cache:false,
            beforeSend: function(){ $("#insert").val('Connecting...');},
            success: function(data){
                if (data=="ok")
                {
                    alert("inserted");
                    $("#Ajouter").val('submit');
                }
                else if (data=="error")
                {
                    alert("error");
                }
            },
            error: function(err){
                 alert('error'+err);
            }
});

我还建议您更改输入的类型:

<input type="submit" id="Ajouter" value="Ajouter">

并更改点击事件以防止默认提交,如下所示:

$("#Ajouter").on('submit',function(e){
    e.preventDefault();

您的代码正在运行:http://jsfiddle.net/07t069uf/5

【讨论】:

  • 没有消息显示。
  • 您是 create_promo 的 SOAP 服务收到 POST 或 GET 请求?
  • 如何验证请求的类型,但通常是 POST 请求。
  • 您是否在为您的后端使用某种框架?因为在你的代码中我看不到请求的类型
  • 没有。你能给我一个请求的例子吗?也许这是我的错,因为我是 SOAP 和 Phonegap 的初学者?
猜你喜欢
  • 1970-01-01
  • 2013-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-01
相关资源
最近更新 更多