【问题标题】:how do I send data from KnockOut to Php for MySql?如何将数据从 KnockOut 发送到 PHP for MySql?
【发布时间】:2012-02-23 17:41:19
【问题描述】:

我可以从 KnockOut 中正确显示我的数据;但是,我想不出一个好的方法来获取 PHP 并让 PHP 为 mySQL 准备数据:

从我的表单页面我可以触发数据在提交时显示,没问题:

var json =   ko.utils.stringifyJson( this.Stuff );     
alert("This is what I wanna save: \n" + json );

但是,假设我想将它发送到一个 php 文件以将其写入 mySql——接下来我该怎么做?

ko.utils.postJson( $("form")[0], this.Stuff );
// or
$.get( "_php/savetodb.php" , json );

...而当PHP页面接收到JSON格式的数据时,那又是什么呢?

我在网上看到的每个解决方案基本上都在说“你可以做到”。但不是我要做的。

我正在尝试的路径(根据我的阅读,这是首选路径)是: 表单数据 -> 敲除 -> 编码 JSON -> PHP -> 解码 JSON -> MYSQL

【问题讨论】:

  • 如果您使用 jQuery 而不是 ko.utils.postJson,请确保使用 $.post 而不是您在问题中使用的 $.get。

标签: php mysql json knockout.js


【解决方案1】:

那里有一些有用的答案——大部分都归结为“嘿,你为什么不阅读文档?”

对于我尝试通过 JSON 向 PHP 发送数据的第一部分,我发现此链接很有帮助: [factsandpeople.com]

所以对我有用的代码(适合测试)是:HTML

<form name="info" action="" method="get">
    First : <input type="text" name="first" value="Sandra" size="23"><br>
    Last : <input type="text" name="last" value="Grastlath"  size="23"><br>

<input type="button" name="valid" value="Validate" onclick="validate()">

<div id="fullresponse"><span/></div>
<div id="sales1Lastname"><span/></div>

接下来是 java 脚本:

var data = 
    { 
         "sales": [ 
             { "firstname" : "John", "lastname" : "Brown" },
             { "firstname" : "Marc", "lastname" : "Johnson" }
          ] // end of sales array
    }
function validate()
    {
        var p = document.forms['info'];

        data['sales'].push( { "firstname" : document.forms['info']['first'].value , "lastname" : document.forms['info']['last'].value } );

        var dataString = JSON.stringify(data);
        $.get('parser.php', { data: dataString}, showResult, "text");
    }

function showResult(res)
    {
        $("#fullresponse").html("<br><b>Full response: </b><br>" +res);
        var obj = JSON.parse(res);
        var l = obj.sales.length - 1;
        $("#sales1Lastname").html("<br><b>Lastname of sales[1]: </b><br>" +obj.sales[l].lastname);
    }

现在是 PHP:

    $logFile = 'logFile';
    $req = $_REQUEST['data'];

    $res = json_decode(stripslashes( $req ), true);

    error_log("result: ".$req.", res=".json_encode($res), 3, $logFile);

    error_log(", sales1_lastname: ".$res['sales'][1]['lastname'], 3, $logFile);

    error_log("\n", 3, $logFile);

    header("Content-type: text/plain");

    echo json_encode($res);

    ?>

就像我说的,这真的很简单,但我现在至少可以遵循我得到的所有伟大建议......并阅读文档。

【讨论】:

    【解决方案2】:

    在您的 PHP 中,您需要:

    1. 使用json_decode解码JSON
    2. 在您的 MySql 数据库上执行 INSERThttp://www.w3schools.com/php/php_mysql_insert.asp

    【讨论】:

    • 这是怎么无奈的,因为我没有将受版权保护的样本复制并粘贴到这个网站上?他的 PHP 答案包括我使用json_decode 链接到的内容,而他的答案不包括 MySql 插入帮助,我的。
    • 我添加了代码并查看了我的源代码。告诉某人阅读文档并没有什么帮助。这相当于在电子商店寻求帮助并让某人为您阅读包装盒。此外,您不是唯一发帖的人,只是显示的唯一帖子。
    • 如果您需要其他帮助(您没有在问题中说明您需要多少,我表示歉意)然后您只需对问题或答案发表评论并询问其他信息,这不值得一个downvote,如果有人简单地问,我可以很容易地添加到这个,他们没有。您的问题并未表明您的 PHP 或 MySql 经验水平。最初的问题帖子是开始而不是结束,这个网站就像维基百科,东西可以改进,但如果最初的错误答案立即被否决,我有什么动力再次帮助你?
    猜你喜欢
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 2015-08-09
    相关资源
    最近更新 更多