0

編集:それ以来、すべてをmysqliに切り替えました。私は mysqli ですべてを正しく行う別のスクリプトを持っていましたが、急いで、mysql で行われたことに気付かずに他の人のスクリプトの一部をコピーしました。これで問題が解決したようです。ありがとうございます。以下のコードを編集して、同様の問題と戦っているすべての人のためのリソースとして使用できるようにしました。

Godaddy 共有ホスティング アカウントで ajax を動作させるのに問題があります。別のサーバーで問題なく使用したことがあるので、godaddy サーバーの何かがおかしいと思いますが、間違っていれば幸いです。最初にこのコードを perl で書いてみましたが、godaddy は JSON.pm をサポートしていないことがわかりました。私はまだajax呼び出しでエラーを投げています。

各パーツのおもちゃバージョンです。関連する HTML の唯一の部分は、overlay.js の呼び出しと、jQuery が機能していることを示すテスト ID セクションです。

以下の HTML は、overlay.js を呼び出します。

<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>Carl Thomas Edwards</title>
  <!--[if IE]>
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
  <![endif]-->
  <link rel="stylesheet" type="text/css" href="css/style.css" />
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" />
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>
  <script language="javascript" type="text/javascript" src="js/overlay.js"></script>
</head>

<body id="main">
  <p>
      <span id="test">0</span> match(es) found.
  </p>
</body>
</html>

jQuery DOM 選択を使用してテストしたため、jQuery 部分が機能していることはわかっていますが、機能します (テスト ID は期待どおりに変更されます)。基本的に、すべてが機能している場合に発生するのは、「FUNCTIONAL」というアラートだけです。ただし、次のようなエラーが常に表示されます。

Failed to perform AJAX call! textStatus: (parsererror) and errorThrown: (SyntaxError: Unexpected token <)

エラーは、godaddy が json で奇妙なことをしていることに関係していると思いますが、間違っている可能性があります。dataType: 'json' 行をコメントアウトすると、アラートは機能していると表示されます。それが実際に問題である場合、「<」がどこから来るのかわかりませんか?

overlay.js

$(function() {
  $('#test').text( "text yes?" );

  $.ajax({
    url: 'overlay.php',
    data: "",
    dataType: 'json',
    success: function(data, textStatus, jqXHR) {
        alert("FUNCTIONAL");
    },
    error: function(jqXHR, textStatus, errorThrown){
        alert("Failed to perform AJAX call! textStatus: (" + textStatus +
              ") and errorThrown: (" + errorThrown + ")");
    }
  });
});

Chrome Developer Tools によると、ajax 呼び出しは、overlay.php をエラーなしで実行します。他の場所でテストされているため、私が持っているデータベース接続が機能することはわかっています。SSH のサーバーでテストされているため、クエリが機能することはわかっています。このファイルにエラーがある可能性は低いと思いますが、繰り返しになりますが、これは私を狂わせているので、提案を受け付けています。

オーバーレイ.php

  $mysqli = mysqli_connect($hostname, $username, $password, $database);
  if(mysqli_connect_errno($mysqli)) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
  }

  $qry = "
    SELECT paint_id, paint_name, paint_date, paint_media, paint_dim, paint_file 
    FROM paintings
    WHERE paint_id = '1'
  ";

  $results = mysqli_query($mysqli, $qry);
  $row = mysqli_fetch_assoc($results);    

  echo json_encode($row);
?>

完全なコードの URL は次のとおりです: http://www.carlthomasedwards.com/painting2.php

Godaddy の php.ini ファイルで json を有効にしました。私も彼らにサポートを求めて連絡しましたが、その男は完全に無知でした。godaddy で ajax 呼び出しを機能させるために必要な特別なことは他にありますか? json に "<" 記号が表示されているというエラーが表示されるのはなぜですか? どんな助けでも大歓迎です!

4

1 に答える 1

1

PHP スクリプトでは、DB 接続をmysqliリソースとして開いていますが、リソースとしてクエリを実行しようとしていますmysql。2 つの呼び出しセットを混在させることはできません。後者は推奨されていないため、使用mysqliして削除してください。mysql

このように呼び出しを混在させると、後のmysqlコードが失敗し、チェックまたは処理していないエラー メッセージが表示される可能性があります。

予期される JSON の結果ではなく、そのままのエラー メッセージが返される場合は、表示されている Javascript からのエラー メッセージとまったく同じ種類のものを取得します。

[編集]

私はあなたのサイトを見ました。これは、ajax 呼び出しによって返されるものです。

<br />
<b>Warning</b>:  mysql_query() [<a href='function.mysql-query'>function.mysql-query</a>]: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in <b>/home/content/78/11658278/html/overlay.php</b> on line <b>29</b><br />
<br />
<b>Warning</b>:  mysql_query() [<a href='function.mysql-query'>function.mysql-query</a>]: A link to the server could not be established in <b>/home/content/78/11658278/html/overlay.php</b> on line <b>29</b><br />
<br />
<b>Warning</b>:  mysql_fetch_row() expects parameter 1 to be resource, boolean given in <b>/home/content/78/11658278/html/overlay.php</b> on line <b>30</b><br />
null
于 2013-09-06T00:41:45.413 に答える