2

私はすでに同様の質問をしたことを知っていますが、jQuery Mobileを使用していると、それを理解できません。だから私はこのフォームを持っています:

<div data-role="page" data-theme="a" id="login_page">
        <div data-role="header" data-position="fixed">
            <h1>****</h1>
        </div>
        <div data-role="content">
            <form id="login_form" method="POST" data-ajax="false">
            <label for="basic">Username:</label>
            <input type="text" name="name" id="username" value=""/>
            <label for="basic">Password:</label>
            <input type="password" name="password" id="password" value=""/>
            <input type="submit" value="Login" id="login" name="login"/>
            </form>
        </div>
        <div data-role="footer" data-position="fixed">
            <div data-role="navbar"></div>
        </div>
</div>

そして、ユーザー名とパスワードをphpスクリプトに送信する必要があります。ここで、phpは応答し、「成功」または「失敗」を送信します。これがphpです:

<?php
session_start();

$username = $_POST["name"];
$password = $_POST["password"];

include('mysql_connection.php');
mysql_select_db("jzperson_imesUsers", $con);

$res1 = mysql_query("SELECT * FROM temp_login WHERE username='$username' AND password='$password'");
$count=mysql_num_rows($res1);

if($count==1){
    echo "success";
}else{
    echo "failed";
}
?>

そして、これをすべて行うために、このスクリプトを使用したいと思います。

$(document).ready(function() {
        $("form").submit(function(){
            $.mobile.showPageLoadingMsg();

            $.ajax({
                url: "http://imes.jzpersonal.com/login_control.php",
                type: "POST",
                dataType: "jsonp",
                jsonp: "jsoncallback",
                data: $("form#login_form").serialize(),
                success: function( response ){
                    $.mobile.changePage( "http://imes.jzpersonal.com/user_panel.html");
                }
            });
            return false;
        });
    });

しかし、私はそれを機能させることができません、私はそこに間違いがあるに違いないことを知っています、私はそれらを見つけることができない、またはそれを行うためのより良い方法です。よろしくお願いします。

4

2 に答える 2

2

間違いはほとんどありません。

I. JSONPはタイプ「GET」のみを許可しますが、完全に削除することができます。

これは、JSONP$.ajax呼び出しの実用的な例です。

   $.ajax({url: server_url,
        data: save_data,
        dataType: "jsonp",
        jsonpCallback: 'successCallback',
        async: true,
        beforeSend: function() {
            $.mobile.showPageLoadingMsg(true);
        },
        complete: function() {
            $.mobile.hidePageLoadingMsg();
        },
        success: function (result) {
            alert(result);
        },
        error: function (request,error) {
            alert(error);
        }, 
       successCallback:function(){

        }
    });

II。ここで重要なのは、JSON / JSONPを使用しているため、PHPでecho"SOME_STRING"を使用することはできないということです。まず、json_encode()関数を使用して結果データを正しくフォーマットする必要があり、それをjsonpCallback関数でラップする必要があります。

echo $_GET['callback'] . '(' . "{'some' : 'example'}" . ')';

また:

echo $_GET['callback'] . '(' . ###your_serialized_json_output### . ')';

III。そして最後に、JSONP呼び出しを処理できるようにサーバーを変更する必要があります。

ここであなたはそれについてもっと見つけるでしょう:

http://www.geekality.net/2010/06/27/php-how-to-easily-provide-json-and-jsonp/

于 2012-12-17T17:00:57.330 に答える
1

通常、クライアント側でできる限り多くの作業を行うことをお勧めしますが、認証はサーバー側で行う必要があります。スクリプトuser_panelは認証をチェックする必要があります。

次に、を使用してSQLリクエストをインジェクションから保護する必要がありますmysql_real_escape_string。コードは次のようになります。

$res1 = mysql_query("SELECT * FROM temp_login 
                     WHERE   username='".mysql_real_escape_string($_POST['username'])."' 
                     AND password='".mysql_real_escape_string($_POST['password'])."'");
于 2012-12-17T14:02:42.317 に答える