发送javascript变量(从knockout.js)到php并返回结果

时间:2013-04-06 22:32:57

标签: php javascript knockout.js

我如何才能完成以下行为。

  1. 从knockout.js表单获取输入后,将变量发送到要处理的页面。该页面使用PHP

  2. PHP页面接收来自knockout.js表单的输入并运行一些计算,然后返回结果

  3. 然后将该变量收回原始页面,然后通过淘汰赛显示

  4. 例如,说我有以下

    //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,但是如何将处理后的计算数据返回到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));
    

1 个答案:

答案 0 :(得分: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));
?>

这是未经测试的,但你明白了。