【问题标题】:How to get data from php in JS on a native android app?如何在原生 android 应用程序上从 JS 中的 php 获取数据?
【发布时间】:2015-11-02 15:40:51
【问题描述】:

我正在开发一个跨平台应用程序,但我的数据遇到了一些问题。

实际上,我有一个包含大量 php 的完整网站,并且我正在使用英特尔 XDK 制作该网站的本机应用程序。

但事情是这样的,我知道我可以在我的本机应用程序上执行 php,所以我试图直接在我的服务器上执行几个脚本并通过 ajax 请求取回结果。

这里是代码:(Javascript)

var games = location.search;
    var res = games.split("=");

    $.ajax({    //create an ajax request to a page that prints the address.
        url: "http://tonight-app.fr/php/mobile_app/getGamesLists.php",  //url for the address page
        data: {"name": res[1]},
        success: function(result){
            var games = result; //create a variable and give it the value of the response data
            var gamesSplit = games.split(";");
            for(i=0;i<gamesSplit.length;i++){
                var gamesSplit2 = gamesSplit[i].split(",");
                test(gamesSplit2[0]);
            }
        }
    });

    function test(gamesSplit2) {
        console.log(gamesSplit2);
        var ul = document.createElement("ul");
        ul.id = "email-list";
        ul.innerHTML = gamesSplit2;
        document.getElementById('test').appendChild(ul);
    }

这是服务器上的 php(到 ajax 的 url 中提到的这个地址)

<?php
require_once("connect_database.php");
mysqli_set_charset($con, "utf8");
$name = $_GET["name"];
$sql="SELECT * FROM `games`";
$reponse = mysqli_query($con, $sql);

while ($row = mysqli_fetch_array($reponse, MYSQL_NUM)) {
    if ($row[2] == $name) {
        echo $result = '
        <a href="gamesReceipes.php?id=',$row[0],'">
        <li class="unread clickable-row">
            <div class="name">
                ',$row[1],'
            </div>
            <div class="message">
                Voir la préparation
            </div>
        </li>;';
    }
}
echo $result;
?>

所以解释一下,我正在执行我的 php 脚本,它给了我 $result,我应该在我的 Ajax 中显示这个结果。

它正在英特尔 XDK 中的模拟器上运行,但在我构建应用程序之后就不行了! (当然我的手机已经激活了4g)

显示器上应该是这样的:

[

我希望你能在这里理解我的问题......谢谢大家!

【问题讨论】:

  • 我想你会发现这是不正确的mysqli_fetch_array($reponse, MYSQL_NUM),应该是mysqli_fetch_array($reponse, MYSQLI_NUM)
  • 实际上并没有改变任何东西。
  • 可能是白名单问题,试试看这个:software.intel.com/en-us/articles/…
  • @OldGeeksGuide 是的 是的 YESSSSSSSSSSSSSSS !!!!!!非常感谢伙计,你拯救了我的一天!谢谢!
  • 嘿@OldGeeksGuide:您是否已经看到与集成谷歌地图相同的问题?它不想显示...

标签: javascript php android ajax intel-xdk


【解决方案1】:

通过这个链接:

https://software.intel.com/en-us/articles/cordova-whitelisting-with-intel-xdk-for-ajax-and-launching-external-apps

感谢你给我这个链接的@OldGeeksGuide!我只需要在 intel xdk 中添加我的脚本的链接就可以了!谢谢 !

【讨论】:

    【解决方案2】:

    您似乎试图重复两次相同的内容。将数据返回到 AJAX 调用应该执行一次,并且是您在脚本中执行的最后一件事。

    <?php
    require_once("connect_database.php");
    mysqli_set_charset($con, "utf8");
    $name = $_GET["name"];
    $sql="SELECT * FROM `games`";
    $reponse = mysqli_query($con, $sql);
    
    // init the $result var
    $result = '';
    
    
    // incorrect parameter constant
    //while ($row = mysqli_fetch_array($reponse, MYSQL_NUM)) {
    while ($row = mysqli_fetch_array($reponse, MYSQLI_NUM)) {
        if ($row[2] == $name) {
            //echo $result = '
            $result .= '
            <a href="gamesReceipes.php?id=' . $row[0] . '">
            <li class="unread clickable-row">
                <div class="name">
                    ' . $row[1] . '
                </div>
                <div class="message">
                    Voir la préparation
                </div>
            </li>;';
        }
    }
    echo $result;
    ?>
    

    你也可以简化这个。

    当您将游戏的name 传递给此脚本时,您可以将其作为搜索条件添加到查询中,然后删除大量不必要的处理。

    <?php
        require_once("connect_database.php");
        mysqli_set_charset($con, "utf8");
    
        // init the $result var
        $result = '';
    
        if ( isset($_GET['name'] ) {    
            $name = $_GET["name"];
            $sql="SELECT * FROM `games` WHERE `name` = '$name'";
            $reponse = mysqli_query($con, $sql);
    
            // I assume there is only one ro w that contains this name
            // so the loop is not required now
            while ($row = mysqli_fetch_array($reponse, MYSQLI_NUM)) {
    
                $result .= '
                    <a href="gamesReceipes.php?id=' . $row[0] . '">
                        <li class="unread clickable-row">
                           <div class="name">' . $row[1] . '</div>
                           <div class="message">Voir la préparation</div>
                        </li>;';
            }
        } else {
            $result = 'No name parameter passed';
        }
        echo $result;
        exit;
    ?>
    

    【讨论】:

    • 我像你一样改变了它,但什么也没发生。甚至我的 $result = 'something ...' 也不显示。
    • 嗯,事实上我现在从 Ajax 获取错误 500。
    • 建议 1 或建议 2 获得 500
    • 1 因为我更改了 $result 中的 echo $result。 (是的,当我放回它的回声时)
    • 糟糕,当我再次删除 echo 检查建议 1 时,忘记将串联从 , 更改为 .!对不起,我傻了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    相关资源
    最近更新 更多