2017-01-22 9 views
1

PHP shoutboxを使用してAJAXを使用してクエリを実行しようとしています。そのため、叫んだりするためにページをリロードする必要はありません。どんな助けでも大歓迎です!PHP/AJAX解析エラー

私は立ち往生しています - 私はパースエラーを受信し続ける:

18:47:27.216 Details: parsererror 
Error:SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data 1 index.php:100:4 

私はHTMLおよびAJAXを保持shoutBox.phpを、持っている:

<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
</head> 

<script type="text/javascript"> 
function sendChatMessage(msg) 
{ 
    $.ajax({ 
     type: "POST", 
     url: "login/postData.php", 
     data: { 
      thisPost: msg 
     }, 
     dataType: "json", 
     success: function(data) 
     { 
      if (data.error === false) 
      { 
       $("#aData").text(data); 
       console.log("Post submitted."); 
       ajax.reload(); 

      } 
      else 
      { 
       console.log("Post was not submitted."); 
      } 
     }, 
     error: function(xhr, desc, err) 
     { 
      console.log(xhr); 
      console.log("Details: " + desc + "\nError:" + err); 
     } 
    }); 
} 
</script> 

<div class="shoutbox"> 

    <h1 class="panel-heading"><strong>Federal</strong> Communications Array</h1> 
    <hr> 
    <ul class="shoutbox-content"></ul> 

    <div class="panel"> 
    <form method="post"> 
    <p> 
    <table border="0" align="center" style="height: auto;" width="90%"> 
     <tbody> 
      <tr> 
       <td><a></a></td> 
       <td> 

       <div class="input-group"> 

        <span class="input-group-addon">Say:</span> 
        <input class="form-control" id="aData" name="post" maxlength='255' placeholder="Enter a message..."></input> 

        <div class="input-group-btn"> 
         <button class="btn btn-success" onClick="sendChatMessage(document.getElementById('aData').value); return false;">Send</button> 
        </div> 

       </div> 


       </td> 
       <td></td> 
      </tr> 
     </tbody> 
    </table> 
    <p> 
    </form> 
    </div> 

    <div class="panel"> 
     <table class="table table-striped"> 
      <thead> 
       <tr> 
        <th width="100px">Timestamp</th> 
        <th width="120px">Username</th> 
        <th width="980px">Message</th> 
        <th></th> 
       </tr> 
      </thead> 


     </table> 
    </div> 



</div> 

そしてpostData.php、どの(想定される)クエリを実行します。

<?php 

ini_set('display_errors', 'On'); 
error_reporting(E_ALL | E_STRICT); 

echo('Script begin.'); 

require "dbconf.php"; // db details 

$connect = mysql_connect($host,$username,$password); 

mysql_select_db($db_name,$connect); 

$post = ''; 

    if(empty($_POST['aData'])) 
    { 
     exit(json_encode([ 
     'error' => 'You must enter a message!', 
     ])); 

    } else { 

     $post = trim($_POST['aData']); 

     $playerUsername = $_SESSION['username']; 

     $idQuery = "SELECT `id` FROM `members` WHERE `username`='$playerUsername'"; 

     $playeridQuery = mysql_query($idQuery); 

     $playerID = mysql_result($playeridQuery, 0); 

     mysql_query("INSERT INTO `shoutboxPosts` SET `id`='$playerID', `username`='$playerUsername', `post`='$post'"); 

    } 



    exit(json_encode([ 
     'error' => false, 
    ])); 

?> 
+3

'echo( 'Script begin。');' < - JSONではありません! – HPierce

+2

また、SQLインジェクションも可能です。ドライバを更新し、パラメータ化されたクエリを使用します。 – chris85

+0

@ chris85私はPDOの実装を計画しています - ただ、正確なajaxメソッドatmを見つけてください。ありがとうございました。 –

答えて

0

単一の行を削除します。

$( "#ADATA")、テキスト(データ)。

JsonエンコードされたデータをDOMのIDに送信することはできません。データの価値を見たい場合は、これを試してみてください:

alert(JSON.stringify(data));

他のものは、あなたのPHPで、終了を避ける、忘れていれば、他のもの。

適切な方法で試してみてください。エラーが発生した場合は、例外をキャッチしてみてください。

あなたの関数の外にグローバル変数を置き、awswerを内部に入れます。直後

エコーjson_encode($のaswer)。 $ connect = null; //常に接続を閉じます。

私はそれがあなたを助けてくれることを願っています。

0

あなたのパースエラーは、このラインから来る

<?php 

ini_set('display_errors', 'On'); 
error_reporting(E_ALL | E_STRICT); 

//echo('Script begin.'); Remove this line. It's violating JSON format 

require "dbconf.php"; // db details 

$connect = mysql_connect($host,$username,$password); 

mysql_select_db($db_name,$connect); 

$post = ''; 

    if(empty($_POST['aData'])) 
    { 
     exit(json_encode([ 
     'error' => 'You must enter a message!', 
     ])); 

    } else { 

     $post = trim($_POST['aData']); 

     $playerUsername = $_SESSION['username']; 

     $idQuery = "SELECT `id` FROM `members` WHERE `username`='$playerUsername'"; 

     $playeridQuery = mysql_query($idQuery); 

     $playerID = mysql_result($playeridQuery, 0); 

     mysql_query("INSERT INTO `shoutboxPosts` SET `id`='$playerID', `username`='$playerUsername', `post`='$post'"); 

    } 



    exit(json_encode([ 
     'error' => false, 
    ])); 

?> 
+0

私はその行を削除し、私はまだ行1列1で同じ解析エラーを受けています。 –