0

次の動作を達成するにはどうすればよいですか。

  1. knockout.js フォームから入力を取得すると、変数がページに送信されて処理されます。このページはPHPを使用しています

  2. PHP ページは、knockout.js フォームから入力を受け取り、いくつかの計算を実行してから、結果を返します。

  3. 変数は元のページで受信され、ノックアウトを介して表示されます

たとえば、次のようなものがあるとします

//knockout_form.js
self.addItem = function() {
    var itemNum = self.newItem; //variable received from knockout form

    var returnedVariable = ???? **send itemNum to processing.php which will then return it**

    self.itemNumbers.push(new ItemEntry(retunredVariable, "$20.00")); //
}

jQuery/Ajax を使用して processing.php に投稿できることは知っていますが、計算されたデータを processing.php から JavaScript ページに戻すにはどうすればよいですか?

以下を編集します。データは processing.php に送信されているように見えますが (ネットワーク タブに表示されます)、アラートは表示されません。

// Operations
self.addItem = function() {
    var itemNum = self.newItem;

    $.getJSON("processing.php?itemNum=" + itemNum),function(data) {
        alert(data); //this does not appear
        self.itemNumbers.push(new ItemEntry(data.result, "$20.00"));
    }
}

phpはこちら

//$result = $_GET['itemNum'];
$result = "test";  //set it just to be sure it's working
echo json_encode(array("result" => $result));
4

1 に答える 1

2

Knockout には ajax 呼び出し自体を行う特別な方法はありません。通常は jQuery を使用します。http://knockoutjs.com/documentation/json-data.htmlを参照してください。

次のようなものです:

self.addItem = function() {
    var itemNum = self.newItem;

    $.getJSON("processing.php?itemNum=" + itemNum,function(data) {
        self.itemNumbers.push(new ItemEntry(data.result, "$20.00"));
    });
}

これは、PHP スクリプトが有効な JSON を出力していることを前提としています。何かのようなもの:

<?php
$result = doCalculations($_GET['itemNum']);
echo json_encode(array("result" => $result));
?>

これはテストされていませんが、アイデアはわかります。

于 2013-04-06T22:40:50.800 に答える