1

私は何時間も探していましたが、問題の解決策が見つかりませんでした。
これは私のjQuery/Ajaxコードです:

$(document).ready(function() {  
  $(".submit_btn").click(function () { 
      var name = $("input#name").val();  
      var dataString = 'query='+$("#query").val()+'&facebook='+facebook+'&twitter='+twitter;
      $.ajax({  
          type: "POST", 
          url: "selectDataSets.php",
          dataType: "json",
          data: dataString,  
          success: function(data) { 

            alert ("hello");

          }  
        });  
        return false;  
  });  
});

今私のselectDataSets.phpコード:

<?
include_once 'config.php';
if ((isset($_POST['facebook'])||isset($_POST['twitter']))&&isset($_POST['query'])) { 

$elements=0;
$dataSet=array();
$tt=array();
$fb=array();

mysql_connect($config['database_url'], $config['database_user'], $config['database_password']) or die(mysql_error());
$queries = explode(";", $_POST['query']);

foreach ($queries as $query){
    if(isset($_POST['facebook']) && $_POST['facebook'] == true){

        mysql_select_db("facebook") or die(mysql_error());
        $mysql_query = "SELECT * FROM page WHERE lower(name) LIKE '%".mysql_real_escape_string(strtolower($query))."%'";

        // Perform Query
        $result = mysql_query($mysql_query);

        while ($row = mysql_fetch_assoc($result)) {
            $set = array(
                    "name" => str_replace("-","",$row['name']),
                    "likes" => $row['likes'],
                    "about"   => $row['talkAbout'],
                    "source"   => "Facebook (Page)",
                    "id"   => $row["id"],
                    "query"   => $query
            );
            $fb[$elements]=$set;
            $elements++;
        }
        mysql_free_result($result);

    }
 }

mysql_close();
echo json_encode($fb);
}

ではdataType: "json"alert("Hello")成功コールバック内に何も追加しないだけでなく、機能しません。を削除するdataType: "json"と、アラートは機能しますが、変数データは JSON として認識されません (実行しようとすると未定義になり続けるためdata[0].name) [ { "name: ... } ]。と完全に動作する別のphpファイルに同様の(ほぼ同じ)コードがあるため、他に何をすべきかわかりませんdataType: "json"

前もって感謝します!

4

1 に答える 1

1

Chrome のネットワーク ウィンドウを使用して、PHP スクリプト/AJAX 呼び出しの実際の出力を確認できますか?

MySQL のエラーなどがないことを確認してください。入力しない場合にエラーが発生しないdataType: "json"理由は、JSON パーサーが不正な形式の JSON を読み取ろうとしていないためです。何らかの理由で、あなたの例の JSON は良いですが、AJAX が受け取っているものは何でも良くありません。ネットワーク ウィンドウから、AJAX 呼び出しを選択し、応答タブを確認します。これにより、実際の出力が表示されます。

于 2013-07-31T16:10:31.037 に答える