首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过AJAX将json数据发布到php

通过AJAX将json数据发布到php
EN

Stack Overflow用户
提问于 2013-10-12 18:56:29
回答 2查看 258关注 0票数 0

试图通过json .getJSON将文本框值发布到数据库--此时,我只是想看看json是否向页面发布了更新查询。

以下为未按要求张贴的信息:

代码:

代码语言:javascript
复制
$(document).on("click", ".submit", function(event){
    alert($(this).text());

    var form_data = {
        FDID: $('.fdid-1').val(),
        CHOICE1: $('.choice-1').val(),
        CHOICE2: $(".choice-2").val()
        };      

    $.getJSON("modify.php",form_data,function(data){
        switch(data.retval){
            case 0: $("#status").html("Update successful!");
            break;
            case 1: $("#status").html("Unable to update!");
            break;
            default: $("#description").html("Database error, please try again.");
            break;
            }
    });
});

modify.php:

代码语言:javascript
复制
<?php

header('content-type: application/json; charset=utf-8');
header("access-control-allow-origin: *");

$fdid = json_decode($_POST['FDID']);
$choice1 = json_decode($_POST['CHOICE1']);
var_dump($choice1);
// This is in the PHP file and sends a Javascript alert to the client
$message = $fdid;
echo "<script type='text/javascript'>alert('$message');</script>";
?>

更多代码:

代码语言:javascript
复制
$.each( data, function ( i, val ) {

            ($('<div>')
            .attr({
                'data-role': 'collapsible',
                'data-content-theme': 'c',
                'data-collapsed': 'true',
                'id': 'cResults'
            })
            .html('<h4>' + this.LastName + ', ' + this.FirstName + '</h4>'
            + '<ul data-role="listview" data-filter="true" data-filter-placeholder="Search Choices..." data-inset="true" class="makecollapsibleul">'
            + '<li><form id="productForm" action="modify.php" method="post">'
            + '<label for="fdid-1">FDID:</label>'
            + '<input type="text" name="fdid-1" class="fdid-1" value=' + this.FDID + '>'
            + '</li><li>' 
            + '<label for="text-1">Choice 1:</label>'
            + '<input type="text" name="choice-1" class="choice-1" value=' + this.C1 + '>'
            + '</li><li>' 
            + '<label for="text-2">Choice 2:</label>'
            + '<input type="text" name="choice-2" class="choice-2" value=' + this.C2 + '>'
            + '</li><li>' 
            + 'IP: ' + this.IPADDRESS + '</li><input type="submit" class="submit" value="UPDATE" /></form><li>' 
            + 'Pick Date: ' + this.PICKDATE + '</li>'
            + '</ul>'))
            .appendTo('#primary');

                    //$(".title").append('<li>'+orderNum+' -- '+itemNum+'</li>');

            $('#makecollapsible').collapsibleset().trigger('create');
            $.mobile.hidePageLoadingMsg();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-12 19:13:37

您不应该调用json_encode()来获取参数。它们使用www-form-urlencoded格式发送,并负责解码它们。

您需要调用json_encode来对要发送的结果进行编码。

代码语言:javascript
复制
<?php

header('content-type: application/json; charset=utf-8');
header("access-control-allow-origin: *");

$fdid = $_POST['FDID'];
$choice1 = $_POST['CHOICE1'];
//var_dump($choice1);
// This is in the PHP file and sends a Javascript alert to the client
$message = $fdid;
$result = array('retval' => 0,
                'code' => "<script type='text/javascript'>alert('$message');</script>");
echo json_encode($result);
?>
票数 3
EN

Stack Overflow用户

发布于 2013-10-12 19:36:15

你知道,根据$.getJson() 文档的说法,

使用GET HTTP请求从服务器加载JSON编码的数据。

所以在$_POST中找不到任何值。使用$_GET$_REQUEST获取数据。

只是注意到您没有id="save"元素,但是有class="save"元素。由于提交事件仅由<form>元素触发,请尝试将单击回调附加到按钮,如下所示:

代码语言:javascript
复制
$(".save").click(function(e) {
    e.preventDefault();
    // your code
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19337964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档