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 回答