1

AJAX を使用して Minecraft サーバーと対話するシステムを作成しています。私のJavaScriptコードは次のとおりです。

function doMessage(name, message)
    {
        var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","http://duncan.usr.sh/omnicraft/api/broadcast-msg.php?message=" + message + "&user=" + name,false);
xmlhttp.send();
document.getElementById("response").innerHTML=xmlhttp.responseText;
}

私のPHPコードは次のとおりです。

<?php
header('content-type: text/plain');

echo "OmniCraft/Api/RequestHTTP";

if($_GET['message'] == "" or ctype_space($_GET['message']) or $_GET['user'] == "" or ctype_space($_GET['user']))
{

    echo "\nOmniCraft/Api/Request/Failed";
    echo "\nRequest invalid: No message specified";
    exit;
}

include_once '../MinecraftQuery.class.php';

    $Query = new MinecraftQuery( );

    try
    {
        $Query->Connect( 'localhost', 25565 );

    $info = $Query->GetInfo( );





    }
    catch( MinecraftQueryException $e )
    {
        echo "\nOmniCraft/Api/Request/Failed";
    echo "\nServer not online";
    exit;
    }

include_once("rcon.class.php"); //Include this file
$r = new rcon("127.0.0.1",25575,"notRealPasswordHere"); //create rcon object for server on the rcon port with a specific password
if($r->Auth()) //Connect and attempt to authenticate
{
$message = $_GET['message'];
$user = $_GET['user'];
$r->rconCommand("/tellraw @a {'text':'<$user using OmniMessage> $message','color':'white'}"); //send a command
echo "\nOmniCraft/Api/Request/Success";
echo "\nMessage sent successfully!";
}
else
{
echo "\nOmniCraft/Api/Request/Failed";
echo "\nUnable to authenticate to RCON";
exit;
}

?>

私のフォームは次のとおりです。

<form >
    <div class="input">
    <input type="text" placeholder="Message" style="padding: 20px 28px;font-size: 25px;" required="true" name="message">
    </div>
    <div class="input">
    <input type="text" placeholder="Name" style="padding: 20px 28px;font-size: 25px;" required="true" name="name">
    </div>

    <button class="btn btn-large btn-success" type="button" onclick="doMessage(this.form.name.value, this.form.message.value)">Send</button>
    <div>
    <p class="lead" id="preview">&lt; using OmniMessage&gt;</p>
    <div>
    <div id="response">
    </div>

AJAX クエリは適切に実行されますが、responseText 変数に応答テキストが含まれていないように見える (つまり、クエリが完了した後、id 'response' を持つ DIV は空のままです)。

応答 DIV の正しい内容は次のとおりです。

OmniCraft/Api/RequestHTTP
OmniCraft/Api/Request/Success
Message sent successfully!

しかし、そうではありません。私は何を間違っていますか?

編集:詳細情報:

次のエラーが表示されます。

[20:14:21.855] NS_ERROR_FAILURE: 失敗 @ http://omnicraft.duncan.usr.sh/omnimessage/:154

154 行目: xmlhttp.send(); (または多分document.getElementById("response").innerHTML=xmlhttp.responseText;

4

2 に答える 2

0

PHP コードでヘッダー呼び出しを削除してみてください。PHP を介して Content-Type ヘッダーを発行しなくなった場合にのみ解消される、非常によく似た問題があります。

于 2013-12-23T23:13:14.717 に答える