ホームページ > バックエンド開発 > PHPチュートリアル > PHP Ajax の戻り値が 1 になるのはなぜですか? フロントエンドがアラート (データ) を受信し、Web ページ全体の HTML コードを表示するのはなぜですか?

PHP Ajax の戻り値が 1 になるのはなぜですか? フロントエンドがアラート (データ) を受信し、Web ページ全体の HTML コードを表示するのはなぜですか?

WBOY
リリース: 2016-06-20 12:31:18
オリジナル
845 人が閲覧しました

php Ajax の戻り値が 1 になるのはなぜですか? フロントエンドがアラート (データ) を受信し、Web ページ全体の HTML コードを表示するのはなぜですか (smarty を使用しており、返された値も Smarty テンプレートに含まれています)


ディスカッションへの返信 (解決策)

php 出力後に exit を追加1; 大丈夫です

まだです!ガイダンスを求めています

つまり、ajax リクエスト全体も処理したということです
通常はビジネス ロジックを実行するだけです

もっと具体的に教えていただけますか?

admin.php のコードを確認するには

class adminController{

public function __construct(){
session_start(); > if(!(isset($_SESSION['username']))&&(PC::$method!='login')&&(!$_COOKIE['username'])){
$this-> showmessage('続行する前にログインしてください!', 'admin.php?controller=admin&method=login');
}else{
$this->auth = isset($_SESSION['username']) ?$_SESSION['auth']:array();
}
}

public function login(){
if (!isset($_POST['submit'])) {
VIEW::display('admin/login.html');
}else {
$this->checklogin();
}
public function checklogin(){
$username = daddslashes($_POST['username']);
$password = md5(daddslashes($_POST['password'])); ('admin')->findOne_by_username($username);
if((!empty($auth))&&$auth['password']==$password){
$_SESSION['username' ]=$username;
//setcookie('username',$username,time()+3600*12);

exit; ;script>window.location.href='admin.php?controller=admin&method=adminlist'";
}elseif (empty($auth)){
echo "ユーザーは存在しません";
exit;
//$this->showmessage("ユーザーが存在しません",'admin.php?controller=admin&method=login' );
}elseif ((!empty($ auth)) &&$auth['password']!=$password){
echo "間違ったパスワード"
//$this->showmessage("間違ったパスワード",'admin.php?controller= admin&method=login ');;//パスワードが間違っています
}

}




admin.php はエントリファイル
header("Content-type: text/html; charset=utf-8");
//url形式index.php?controller=コントローラ名&method=メソッド名
require_once('config.php ') ;
require_once('framework/pc.php');
PC::run($config);

特定のフレームワークを使用している場合、このフレームワークには ajax が必要ですmode
通常、フレームワークは完全なプロセスを完了し、ページ html を出力します
しかし、ajax は通常ページを出力する必要がないため、ワークフローを変更するには ajax モードをオンにする必要があります

いいえ、これは私が簡単なマイクロフレームワークを自分で書きました


設定するときに、ajax について何も書きませんでした

次に、smarty テンプレートをビューに導入しましたmvc Engine のレイヤー


自分で書く場合は
を追加する必要があります ajax と通常のページでは出力方法が異なるので統一処理は当然問題があります

ajax を使用する場合リクエストしてからパラメータを追加し、エントリ プログラム admin.php にテンプレートをロードしないように指示します。

ここでは、
$.ajax({

url:'admin.php?controller=admin&method=login',

...
}); >送信はありません $_POST['submit'])


管理コントローラ
メソッド
が実行されます VIEW::display('admin/login.html');これで、テンプレートが読み込まれました。

Firefox の Firebug または Chrome コアブラウザの開発者ツールの NewWork を使用して送信し、submit パラメータが送信されたかどうかを確認することをお勧めします。

または、submit の値である名前が form1 にあるかどうかを確認してください。 589e78c7eb2cbd0f75265b40a8ae1b25これは firebug を使用して行ったものです

応答も送信されます

ログを書きますそれを段階的にフォローしていきます。

echo 1 の後にどの形式でもテキスト出力がないようにするには、対応するページの PHP 終了記号を変更しますか? >

を削除し、ブラウザに ajax アクセス アドレスとパラメーターを直接入力して、ステップごとにデバッグします。

ajaxReturn

もっと詳しく言う 具体的に?

私も同じ問題に遭遇しました、それを解決する方法
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート