【问题标题】:How can I work on the output of jsonp in phonegap?如何在 phonegap 中处理 jsonp 的输出?
【发布时间】:2011-08-23 13:07:11
【问题描述】:

我正在开发一个带有 Android 项目的 PhoneGap。我设计了一个登录页面,我想在其中为有效和无效用户显示一个警告框。我正在使用 PHP 进行数据库验证。

这是我的 php 页面:

<?php
    header('Content-type: application/json');

    $server = "localhost";
    $username = "root";
    $password = "";
    $database = "mymusic";

    $con = mysql_connect($server, $username, $password) or die ("Could not connect: " . mysql_error());
    mysql_select_db($database, $con);
     $id=$_GET["id"];
     $pass=$_GET["password"];
    //$id='ram';
    //$pass='ram';
    $sql = "SELECT id, name,password FROM login where userid='$id' and password='$pass'";
    $result = mysql_query($sql) or die ("Query error: " . mysql_error());

    $records = array();

    while($row = mysql_fetch_assoc($result)) {
        $records[] = $row;
    }

    mysql_close($con);

    echo $_GET['jsoncallback'] . '(' . json_encode($records) . ');';
    ?>

这是我的java脚本函数:

 function onDeviceReady(){
        var output = $('#output');
        var id = document.getElementById('userid').value;
        var pass = document.getElementById('password').value;
       // webcam.set_api_url( 'test.php?filename=' + escape(filename));

        $.ajax({
            url: 'http://192.168.1.214/sample/dologin.php?id='+id+'&password='+pass,
            dataType: 'jsonp',
            jsonp: 'jsoncallback',
            timeout: 5000,
            success: function(data, status){
                console.log('entered success============');
                $.each(data, function(i,item){ 

                var logi=item.id;
                if(logi!=null)
                    alert("valid user");
                else
                    alert("invalid user");

                });

            },
            error: function(){
                console.log('entered success====================');
               output.text('There was an error loading the data.');
            }
        });
 }

这不适用于无效用户。每当我输入有效的用户名和密码时,它都会显示有效的用户消息框。当我输入无效的用户名和密码时,它不会显示任何内容。

提前谢谢你...

【问题讨论】:

  • 只是一个评论 - 您不应该将密码作为查询字符串参数传递,因为您会将密码泄露给任何想要嗅探密码的人。这些条目也存储在 Web 服务器日志文件中。如果您想将密码传递到服务器端,请发布密码。
  • 是的,janis 先生,我想将密码传递给服务器。感谢您的回复。请建议我应该申请什么条件来制作与有效和无效用户相关的警报框..?
  • @Kuntal,在服务器端,您可以检查此类用户的密码是否正确,然后您可以选择如何包装该数据 - 毕竟您可以向客户端发送您想要的任何内容在 javascript 中,您可以访问该数据。
  • 实际上先生,我不知道确切的方法。请帮助我...举个例子...

标签: php javascript android cordova


【解决方案1】:

尝试在浏览器中调试它,并可能从您的 ajax 成功调用 console.log(data) 中将返回的 jsonp 数据发送到控制台。

您的 jsonp 很可能返回一些数据而不是 null...即使它只是 undefined 或空字符串。您的条件很可能是罪魁祸首。

【讨论】:

  • 谢谢您,先生...我已经使用 console.log(data) 完成了。这是
猜你喜欢
  • 2014-01-27
  • 2013-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-27
  • 2021-03-19
  • 2014-10-10
  • 1970-01-01
相关资源
最近更新 更多