0


0

関数間で変数を渡し、それらを処理するJavaScript

ユーザーの選択内容(地域、サービス(pre 12など)および重量)に応じて、配信コストを返すJavaScriptベースのページで作業しています。 私はJSを知らないだけなので、自分の道を混乱させました。

私の質問は:

  1. スクリプトで詳しく説明されているように、関数間で変数を渡すことはできますか 以下?

  2. 上記が達成されたら、変数を処理して 結果を表示します。今、私は大規模なifelseを実行できますが、30の奇妙な可能性があるので、本当にしたくありません。 必要な情報はすべてSQL DBにあるので、これは私の好みの選択ですが、JS、ブラウザー側、サーバー側の問題でこれを行う方法はわかりません。 SQL DBからデータを取得するには、変数を(上記のように)PHPに渡す必要がありますか(3つすべてが設定されている場合)? もしそうなら、私はこれを行う方法がわかりません。

  3. PHPを使用する場合、ページをリロードする必要がありますが、可能ですか? これをユーザーにシームレスにする、つまり、すべての選択がまだ表示されるようにしますか?

function flag(nation, area) {
  this.nation = nation;
  var el = document.getElementById("desc");
  el.innerHTML = 'The region you have selected is ' + area + '';
  document.getElementById("flag").innerHTML = '';
}

function output(service) {
  this.service = service;
  var el = document.getElementById("service-desc");
  el.innerHTML = 'You have selected a ' + service + ' service.';
  document.getElementById("clock").innerHTML = '';
}

function result() {
  //get varibles(nation & serive) from functions above ~ not sure how to do this!
  //process varibles
  if (nation == "UK" && service == "Standard next day") {
    document.getElementById("result").innerHTML = '£9.99';
  } else if (nation == "UK" && service == "Before 12pm") {
    document.getElementById("result").innerHTML = '£14.99';
  }
  // etc,etc,etc....
  else {
    document.getElementById("a1").innerHTML = "";
  }
}

3 Answer


2


基本的に3つの選択肢があります。

  • PHPスクリプトにページ上のすべてのデータをJavaScript配列として配置させる JavaScriptですべてを処理します。 データの総量が多すぎない場合、これは問題ありません

  • ユーザーが選択して処理したときにページ全体をリロードします PHPのすべて(既存の選択を保持することを含む)-これはJavaScriptなしで機能させるための唯一の方法ですが、それ以外の場合は欠点しかありません。

  • AJAXを使用すると、 ユーザーが選択を行います。 JavaScriptはサーバーをバックグラウンドで呼び出し、特別なPHPスクリプトは関連するデータ(通常はhttp://en.wikipedia.org/wiki/Json[JSON]形式を使用)のみを返します。このデータはその後JavaScriptがページの更新に使用します。 これが最近の一般的な方法です。


0


AJAXが必要です。PHPでサーバー側のデータフィードを作成し、JSでブラウザー側のミニアプリケーションを作成して、サーバーフィードと通信し、それに応じてWebページを更新します。 これは、JavascriptのXMLHttpRequestオブジェクトを使用して実現されます。 それを使用することを学び、それを包み込み、より高いレベルのサービス(jQueryなど)を提供するJSライブラリに依存することを強くお勧めします。


0


JavaScriptでは、関数の外部で変数を宣言すると、任意の関数から使用できます。これはグローバル変数です。 E.g.

var x, y;
function flag(nation,area)
{
  x = nation;
  y = area;
}
function output(service)
{}
function result() {
  //In here you can do whatever you want with x and y
}

データベースからデータを取得してjavascriptに返すPHPスクリプトを作成するのが最適です。 これを行う最善の方法は、AJAX呼び出しです。これにより、目的のデータベースからデータを不用意に取得し、ページ全体ではなく、ページの特定の部分のみを更新できます。

AJAXメソッドが非常に使いやすいので、http://jquery.com/ [jQuery]をご覧になることをお勧めします。 これは、javascriptをラップし、多くの使いやすい機能を備えたライブラリです。優れた紹介ビデオhttp://blog.themeforest.net/tutorials/jquery-for-absolute-beginners-video-series/ [こちら]

以下は、jQueryを使用してデータベースからデータを取得するPHPスクリプトを呼び出す方法に関するhttp://www.ibm.com/developerworks/library/os-php-jquery-ajax/ [チュートリアル]です。