1

私はjQueryとajaxがまったく初めてです。現在、ステートメントを.phpファイルに投稿してステートメントを実行するjavascriptファイルからローカルSQLサーバーにテーブルを作成しようとしています。

.js ファイル:

function executeStatement(sqlStatement){
    $.ajax({
      type: "post",
      data: sqlStatement,
      cache: false,
      url: "api.php",
      dataType: "text",
      error: function(xhr, status, error) {
        var err = eval("(" + xhr.responseText + ")");
        alert(err.Message);
      },
      success: function ()
      {
        alert ("Success!!");
      }
    });
  }

.php ファイル:

  require_once('PhpConsole.php');
  PhpConsole::start();
  debug('HERE!!!');

  $sqlStatement = $_POST['sqlStatement'];

  $host = "*****";
  $user = "*****";
  $pass = "*****";
  $databaseName = "db_user_data";

  // Create connection
  $con = mysqli_connect($host, $user, $pass, $databaseName);

  // Check connection
  if (mysqli_connect_errno($con)){
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
  else{
    $con->query($sqlStatement);
    header('Location: success.php');  
  }

PHP コンソールを使用して .php ファイルをデバッグしますが、この場合、最初のログでも「HERE!!!」コンソールに出力されないので、この .php ファイルに到達するかどうか疑問に思っています。successいずれにせよ、データベースに変更がない場合でも、executeStatement メソッド内のイベントに到達し、「成功」が出力されます。ちなみに、.php ファイルもローカル サーバーで実行されます。誰かが問題がどこにあるのか考えていますか??

前もって感謝します

4

1 に答える 1

2

PHP コードの「$pass」変数にタイプミスがあります。

require_once('PhpConsole.php');
PhpConsole::start();
debug('HERE!!!');

$sqlStatement = $_POST['sqlStatement'];

$host = "*****";
$user = "*****";
**$pass = "*****";**
$databaseName = "db_user_data";

// Create connection
$con = mysqli_connect($host, $user, $pass, $databaseName);

// Check connection
if (mysqli_connect_errno($con)){
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
else{
  $con->query($sqlStatement);
  header('Location: success.php');  
}

編集: これが私の改訂された JS コードです。これは、AJAX 呼び出しから PHP コードにコードを渡して戻すことができるため、私にとっては完璧に機能します。これを試して:

var sqlStatement = "sqlStatement=SQLSTATEMENTHERE";
$.ajax({
  type: "POST",
  data: sqlStatement,
  cache: false,
  url: "api.php",
  success: function ()
  {
    alert ("Success!!");
  }
});

変数を関数の外側に配置し、ajax 呼び出しを内側に配置して、古いものを置き換えます。PHPについては、すぐに確認します。

于 2013-03-30T12:46:01.100 に答える