1

[送信] ボタンを押したときに PHP スクリプトで結果の SQL ステートメントからJSONデータを返したいのですが、代わりに受け取ります。null

返された JSON を使用して、Google マップでフィルター表示マーカーを表示しますが、今のところ、データを PHP スクリプトから jQuery ページに戻して操作/使用できるようにしたいだけです。

送信ボタン:

HTML

<input type="submit" id="filter" value="Filter" />

JS

$('#myform').on('submit', function(e) {
  e.preventDefault();
  var myData = $('#myform').serializeArray();
  $.getJSON('myscript.php', myData, function(json){
    alert(json);// actually filter for later                    
  });   
});

PHP スクリプト:

// action is a hidden form control I use to check if form was submitted
    if(isset($_POST["action"])){

        if(isset($_POST["color"]) && isset($_POST["zipcode"])){
            // try to open a connection to a MySQL server
            $connection = mysql_connect($host, $username, $password) or die("Could not connect" . mysql_error());
            // select the active MySQL database to work with
            $db_selected = mysql_select_db($database, $connection) or die("Can\'t use db:" . mysql_error());

            $query = 'sql statement to return resutls based on what color and zipcode was provided';
            $result = mysql_query($query) or die("Can\'t do that: " . mysql_error());
        }

        //  close connection to the database


    echo json_encode($result);
    mysql_close($connection);
    }
4

2 に答える 2

2

mysql_query呼び出しの結果オブジェクトを直接返すことはできません。mysql_fetch_arrayまず、または同様の関数( PHP docu)を使用して解析する必要があります。

...
$result = mysql_query($query);
if ( $result === false ) {
  die("Can\'t do that: " . mysql_error());
}

$retVal = array();
while( $row = mysql_fetch_array( $result ) ) {
  $retVal[] = $row;
}

...
echo json_encode( $retVal );

編集

getJSONlink )のjQuery仕様によると、データはPOSTを使用せずにGETパラメーターを使用して送信されます。したがって$_POST、PHPコードのすべての外観をまたはのいずれか$_GETに変更する必要があります$_REQUEST

これに加えて、変数が設定されていない場合は、いくつかのエラーメッセージを返す必要があります。現在(コードによると)空のドキュメントのみが返されます。

于 2012-05-29T14:10:31.857 に答える
1

エコーの前に、返されたコンテンツ タイプを宣言する必要があります。

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

データの受信を確認する場合は、次を使用できます。

$.ajax({
    url: url,
   data: myData,
   success: function(json) {},
   error: function(json) {} // this should allow you to check if data is received (but since the content type is set to text/html and $.getJSON expectr application/json it won't be a success)
});
于 2012-05-29T14:11:22.733 に答える