1

スクリプトに問題がある

問題は、投稿を介して取得したjson配列があり、それをパブリック配列に設定して、関数の外で使用できるようにしたい場合です。これが私のコードです。

HTML コード:

<input name="myValue">

Jquery コード:

var myArray = newArray(); 

$(document).ready(function(){

   $('input[name="myValue"]').foucusout(function(){
     var postValue = $(this).val();
     $.post('myPhp.php',{post:postValue},function(data){

      var JsonArray = $.parseJSON(data);
          myArray = JsonArray;
     };

}):

PHP コード;

<?

if(isset($_POST["post"])){

$myVal = $_POST["post"];

$db = mysql_query("SELECT * FROM parts WHERE code = '$myVal'");
$result = mysql_fetch_array($db);

echo json_encode($result); 
}    
?>

これは myArray を設定していません。私は何を間違っていますか?

編集

Jquery コード:

var myArray = new Array();
$(document).ready(function(e) {


   $('input[name=myValue]').focusout(function(e) {
        var myPost = $(this).val();
        $.post('myPhp.php',{part:myPost},function(data){
                myArray = $.parseJSON(data);
                alert(myArray[2]);
            });
    });

    $('button[name=getArrayValue]').on("click",function(){
            alert(myArray[3]);
        });
});

HTML コード

<input name="myValue">
<button name="getArrayValue">Get</button>

入力フィールドをフォーカスアウトすると、配列から2番目の値でアラートが表示され、ボタンを押すと3番目の配列位置から値が取得されます。だからそれは今働いています。

助けてくれてありがとう。

4

1 に答える 1

0

クエリを実行する前にデータベースに接続しません。データベースに接続していない場合、クエリはどのように何かを選択できますか?

これをクエリの前に追加します。

$username = //your DB username
$password = //your DB password

mysql_connect("localhost", $username, $password);

PDO や MySQLi など、非推奨の API を使用する必要があります。

編集:

非常に単純です。AJAX 呼び出しは非同期であるため、配列は focusout ハンドラーの実行後に設定されます。これは、フォーカスアウトで何が起こるかです:

  1. focusout ハンドラーが呼び出される
  2. AJAX 呼び出しを行い、AJAX 要求が終了したときに実行する関数を提供するように jQuery に指示します。
  3. focusout ハンドラーが終了し、まだ設定されていない配列に警告を試みます。
  4. AJAX 要求が終了し、jQuery が指定した関数を呼び出します。
  5. 次に、focusout ハンドラーのずっと後に、配列が設定されます。
于 2013-03-17T14:31:46.497 に答える