2016-05-06 8 views
1

オーケー[オブジェクトのオブジェクト]、私はJSONへの初心者くさいのビットです。私はJSONを介して元のフォームに戻って値を返すAJAX呼び出し(PHPのmssqlクエリ)を一緒にcobbleしようとしています。変数の実際の値の代わりに[object Object]が得られます。いくつかの検索を通じて、私は問題が解析に関連していると思うが、私はjson_encodeがこれを処理したと思った。それとも、そうしていて、これを正しく構成していないかもしれません。AJAXのjson_encode戻っ

はここでイムが達成しようとするものです:口座番号、口座名及び住所1: HTMLフォームは、3つのフィールドがあります。私は、ユーザーが口座番号を入力して、mssqlクエリの結果とぼかしで名前とアドレスフィールドを入力できるようにします。ここで

は、私が持っているものです。 HTML

<body> 
<label>Account Number:</label><input type="text" id="acctnumber" /> 
<label>Account Name:</label><input type="text" id="acctname" /> 
<label>Address 1:</label><input type="text" id="address1" /> 
</body> 

jqueryの(私はテストのためにacctnumber入力値を入れる)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
     $("#acctnumber").blur(function(){ 
      $.ajax({ 
       url: "ajaxtestscript.php?acctnumber=hfi01", 
       dataType: "json", //the return type data is jsonn 
       success: function(data){ // <--- (data) is in json format 
       $("#acctname").val(data.Name); 
       $("#address1").val(data.Address); 
       //parse the json data 
       } 
     }); 
    }); 
}); 
</script> 

PHP

<?php 

    header('Content-Type: application/json'); 

//mssql connection info// 

    $acctnumber = $_GET["acctnumber"]; // we received this from the json call 

    //declare the SQL statement that will query the database 
    $query = "select[description],[daddr1] from trCustomer where company = '$acctnumber' and archived = 0"; 

    //execute the SQL statement and return records 
    $rs = $conn->execute($query); 

    $test = array(); 
    $test['Name'] = $rs[description]; 
    $test['Address'] = $rs[daddr1]; 

    echo json_encode($test); 


    //echo $name.$address; put this in to test the query was working, which it was 

    //close the connection and recordset objects freeing up resources 
    $rs->Close(); 
    $conn->Close(); 


    $rs = null; 
    $conn = null; 


    ?> 

私が実際にしてみてくださいこれはhtml形式で、私はアカウント番号の値(この時点でハードコードされている)を入力してクリックします他の2つの入力フィールドでは、[object Object]が得られます。私はちょうど私のechoクエリ背中、私はので、私は私が何か間違ったことをしたり、私のjson_encodeで何かを残していると思っていた値を見ることができればけれども。どのような援助は、大幅いただければ幸いです。すべての

+0

もっと分かりやすくするために 'data'を共有する必要があります。 –

+0

あなたが成功機能で、いくつかの警告またはにconsole.logを入れたときに、[オブジェクトオブジェクト]を取得している、と言いますか? –

+0

dataTypeに 'json'を指定すると、phpスクリプトから返される文字列はjsonとして解析され、' data'はjavascriptオブジェクトになります。文字列が有効なjsonの場合...もちろん、内部にあるものを見るには、success関数で 'console.log(data);'を実行することができます。 – jeroen

答えて

0

まず、あなたの質問は不明であると、状況に応じて、私はデバッグ出力をテストします。

1. PHP:クエリ結果:var_dump(json_encode($test)); exit(0);

これは、前に送信されるどのようなデータを知るのに役立ちます。アラートまたはコンソールは受信したデータをajaxで表示して表示します。

2. Javascriptを:console.log(data);

これは受信されているどのようなデータを知るのに役立ちますし、あなたが必要なフィールドに移入するために記述する必要が正確に何を。ブラウザのコンソールをチェックインします。

ありがとうございますupvoting。乾杯!

1

あなたのクエリを実行した後、DBライブラリがそうするはずの関数を使って結果の行を取得する必要があります。そしてあなたの質問を最初に準備してはいけませんか?

それ以外の場合は、json_encode()にしようとしているオブジェクトがリソースオブジェクトです。だからこそあなたはobject Objectになる。私はこのようなコードを期待しています。

$conn = new PDO(...); 
$stmt = $conn->prepare("SELECT ..."); 
$stmt->execute(); 

$test = array(); 
while ($row = $stmt->fetch()) { 
    $test[] = array(
     'Name' => $row[description], 
     'Address' => $row[daddr1] 
    ); 
} 
echo json_encode($test); 

$stmt = NULL; 
$conn = NULL;