4

document.readyURL行に「temp」というパラメーターがあるかどうかをチェックするカスタムWebサイトがあります。その場合、値をデータベースに保存するサーバーで PHP 関数を呼び出します。今私にとって奇妙なことは、手動でこれを入力すると:

http://mywebsite.org/?temp=7

私のブラウザでは、すべて正常に動作します。しかし、この Web サイトを使用して GET をテストすると、次のようになります。

http://requestmaker.com/

私のウェブサイトは何もしません。

これは、パラメーターの存在をチェックする私の jQuery コードです。

$(document).ready(function() {
      var data = gup('temp', location.href);
      if (data != undefined) {
        $.ajax({
          data: {
            action: 'insertTemp',
            value: data
          },
          type: "GET",
          url: "SQL.php",
          success: function(data) {
            //alert("Data Saved " + data);
          },
          error: function(xhr) {
            alert(xhr.responseText);
          }
        });
      }

document.ready自動化された HTML リクエストでチェックされないため、問題になる可能性があると思いますか?

編集:

Gup はインターネットからコピーした関数で、URL のパラメーターをフィルター処理するだけです。

function gup(name, url) {
  if (!url) url = window.location.href;
  name = name.replace(/[\[\]]/g, "\\$&");
  var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)", "i"),
    results = regex.exec(url);
  if (!results) return null;
  if (!results[2]) return '';
  return decodeURIComponent(results[2].replace(/\+/g, " "));
}

document.ready()節の外で宣言されています。

これは私が得る応答コードですrequestmaker.com:

http://pastebin.com/WL2CQP4v

4

2 に答える 2

1

これは、requestmaker.com がリクエストを送信し、レスポンスを表示しているだけだからです。Webエンジン/ブラウザで実際にWebページを実行しているわけではありません。

あなたは最終目標が何であるかを書きませんでしたが、自動テストなどの場合はtravis-ci、 、phantomjsまたは同様のツールをチェックアウトする必要があります。

于 2016-05-24T19:19:27.243 に答える
1

問題は、埋め込まれた ECMA (Javascript) コードが実行されるブラウザーに依存していることです。「document.ready」はブラウザなしでは起動されません..

于 2016-05-24T19:30:42.133 に答える