1

ajax呼び出しが行われた後に要素を設定しようとしていますが、これが正しい方法であるかどうか、正しい場合はどこが間違っているのかよくわかりません。

これが私のコードです...

$(document).ready( function() {
    $("#edit_delete").click(function() {
        $.post('mySelect.php', $("#edit_delete").serialize(), function(result) {
            $('#message1').html(<?php echo $myTest; ?>);
            $('#message2').html(<?php echo $myOtherTest; ?>);
        });
    }   
});

mySelect.php :

<?php include '../../includes/connection.php' ?>
<?php
    $selected_user = $_POST["users"];
    $result = mysql_query("SELECT * FROM users WHERE id = $selected_user");
    $row = mysql_fetch_array($result, MYSQL_ASSOC);
?>
<?php $myTest = $row['id']; ?>
<?php $myOtherTest = $row['name']; ?>
<?php mysql_close($con); ?>

(さらに情報が必要な場合はお知らせください。私の質問を自由に編集してください。)

4

5 に答える 5

3

AJAX呼び出しを行った後、PHPスクリプトの出力全体が(あなたの場合)コールバックの「結果」パラメーター内に配置されます。

これはecho 'Hello!';、mySelect.php の場合、結果に文字列 'Hello!' が含まれることを意味します。

結果を警告したい場合はalert(results);、コールバック内で行うだけです。

他の人が指摘しているように、json_encoded配列を使用して、サーバーから送り返すデータをより有効に活用することもできます。

于 2012-04-17T14:07:56.257 に答える
1

いいえ、データをクライアントにエコーバックしてから使用する必要があります

<?php include '../../includes/connection.php' ?>
<?php
    $selected_user = $_POST["users"];
    $result = mysql_query("SELECT * FROM users WHERE id = $selected_user");
    $row = mysql_fetch_array($result, MYSQL_ASSOC);
//prepare an array to return
$return = array();
$return['id'] = $row['id']; 
$return['name'] = $row['name']; 
//set the header
header('application/json');
//encode it and echo it back
echo json_encode($return);

その後

   $.post('mySelect.php', $("#edit_delete").serialize(), function(result) {
        $('#message1').html(result.id);
        $('#message2').html(result.name);
    });

これを行うのは、サーバーに対して非同期呼び出しを行っているためです。ページをリロードせず、呼び出しを行ってデータを取得するだけです。

于 2012-04-17T14:08:28.003 に答える
1

結果が機能する方法は、アプリケーションの出力全体を送信することです。したがって、変数は意図したとおりに機能しません。

代わりに、次のように json_encode (javascript object notation) をエコーし​​ます。

<?php
  echo json_encode(array('myTest' => $row['id'], 'myOtherTest' => $row['name']));
?>

次に、次の方法で呼び出すことができます。

ajax コールバックからの results.myTest

于 2012-04-17T14:08:34.177 に答える
1

私の意見では、$.post 関数のコールバックで php を使用することは避けるべきです。ajax を使用して、やりたいことがすべてできます。

Javascript コード:

$(document).ready( function() {
    $("#edit_delete").click(function() {
    $.ajax({
            type: "POST",
            url: "mySelect.php",   
            data: 'users='+$("#edit_delete").serialize(),
            success: function(data) {
            var result = $.parseJSON(data);    
                $('#message1').html(result.id);
                $('#message2').html(result.name);
            }
       });          
    }   
});

PHP コード:

<?php 
include '../../includes/connection.php';

$selected_user = $_POST["users"];
$result = mysql_query("SELECT * FROM users WHERE id = $selected_user");
$row = mysql_fetch_array($result, MYSQL_ASSOC);

$return = array(
'id' => $row['id'],
'name' => $row['name']
);

mysql_close($con);

echo json_encode($return);
?>

各行でphpタグを開いたり閉じたりしないようにしてください。フィラの開始時に 1 つ、終了時に 1 つあれば十分です。

私の悪い英語を申し訳ありません。

幸運を

于 2012-04-17T14:24:31.437 に答える
0

jQueryのマニュアルを見るべきです

JSONの使用例があります

$.post("test.php", { "func": "getNameAndTime" },
 function(data){
   console.log(data.name); // John
   console.log(data.time); //  2pm
 }, "json");

Javascript 変数について指定したコードでは、エコーアウトしたものによって結果が入力されます。

于 2012-04-17T14:09:56.433 に答える