0

Qt MainWindow に WebView として読み込まれる HTML ファイルがあり、そのファイルは localhost XAMPP フォルダーにあります。このファイルは基本的にユーザーから 2 つの日付と時刻の間隔を取得し、ユーザーが [クエリを取得] ボタンをクリックすると、マップは XAMPP 上の MySQL データベースから取得されたクエリの合計量をヒートマップとして表示します。ただし、この HTML ファイルを Qt から実行しようとすると (HTML ウィンドウの [クエリを取得] ボタンをクリックすると)、Ajax POST エラーが発生し、Qt からデータベースにアクセスできませんが、localhost のコピーではアクセスできます。また、NetworkAccessManager を使用してクエリをフェッチする PHP ファイルに POST しようとしましたが、応答として「不明なエラー」が返されました。これを修正する特定の方法はありますか?HTML-jQuery コードと NetworkAccessManager ポスト コードは次のとおりです。

HTML-jQuery 部分:

<form id="ajaxForm" action="index.php" method="post">

Start <input type="text" name = "date1" id = "datepicker" value = "2011-07-13" style = "width:70px">
<input type="text" name = "time1" id = "timepicker1" value = "00:00" style = "width:40px"> 
--
End <input type="text" name = "date2" id = "datepicker2" value = "2011-07-13" style = "width:70px">
<input type="text" name = "time2" id = "timepicker2" value = "00:01" style = "width:40px">



<select name = "freq">
  <option value = "all" selected = "true">all</option>
  <option value = "hourly">hourly</option>
  <option value = "daily">daily</option>
  <option value = "weekly">weekly</option>
  <option value = "monthly">monthly</option>
</select>

data between 
    <input type="text" id="time" style="border:0; color:#f6931f; font-weight:bold;" />

    <input type="submit" name="fetch" value="Fetch">


</form>

そして、返信用の PHP ファイルをテストするために使用した NetworkAccessManager 部分:

QNetworkAccessManager* mNetworkManager = new QNetworkAccessManager(this);
QObject::connect(mNetworkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(onNetworkReply(QNetworkReply*)));
connect(mNetworkManager, SIGNAL(finished(QNetworkReply*)),
        this, SLOT(replyFinished(QNetworkReply*)));
QUrl url = "http://localhost/heatQuery.php";


QUrl params;
params.addQueryItem("date1","2011-07-13");
params.addQueryItem("time1","00:00");
params.addQueryItem("date2","2011-07-13");
params.addQueryItem("time2","13:00");
params.addQueryItem("freq","hourly");


QByteArray data;
data.append(params.toString());
data.remove(0,1);

QNetworkRequest request;
request.setUrl(url);
request.setHeader(QNetworkRequest::ContentTypeHeader,
QVariant("application/x-www-form-urlencoded"));
mNetworkManager->post(request, data);


void MainWindow::replyFinished(QNetworkReply *reply){
//Use the reply as you wish
QString text(reply->errorString());
std::cout<<"REPLY IS" << text.toStdString() << std::endl;

}
4

1 に答える 1

1

ローカルホストのコピーがデータベースに正常にアクセスしているため、Change the permission of your database and then run.

データベース権限を完全に変更するには、この[Linuxを使用していると仮定して]コマンドを実行します。

 chmod 777 database_name
于 2012-05-18T19:02:51.823 に答える