繁体   English   中英

PHP:在AJAX / JSON中提交表单有问题吗?

[英]PHP: Problem submitting form in AJAX/JSON?

目前我有以下代码:

home.php

<form name='myformname' id='myformid'>
    <input type='text' name='mytext1' value='abc'>
    <input type='text' name='mytext2' value='123'>
    <input type='submit' value='Submit'> 
</form>

<div id='textone'></div><div id='texttwo'></div>

_home.php

$arr = array( 'textone' => $_POST['mytext1'], 'texttwo' => $_POST['mytext2'] );
echo json_encode( $arr );

ajax.js

jQuery('#myformid').live('submit',function(event) {
    $.ajax({
        url: '_home.php',
        type: 'POST',
        data: $('#myformid').serialize(),
        success: function( data ) {
            // TODO: write code here to get json data and load DIVs instead of alert
            alert(data);
        }
    });
    return false;
});

提交时的输出:

{"textone":"abc","texttwo":"123"}

我想使用_home.php中的json数据在textone DIV中加载mytext1值和texttwo DIV中的mytext2

提示:我正在使用此答案对链接单击事件执行相同的任务。 但是如何在表单提交时做到这一点?

谢谢

在成功功能中

for (prop in data){
    $('#' + prop).html(data[prop]);
}

您只想解析该JSON并将div设置为其包含的值,对吗?

var divs = JSON.parse(data);
for (var div in divs) {
  document.getElementById(div).innerHTML = divs[div];
}

(以前发布者的语法可能更像您所追求的,并且可能与跨浏览器更兼容,但不包括JSON解析。)

由于JSON只是JavaScript的子集,因此您可以对其进行eval()。 JSON.parse()基本上可以做到这一点,但可以确保如果“数据”包含某些讨厌的代码而不是简单的对象,则不会对其进行评估。

这是我完整的JS解决方案:

jQuery('#myformid').live('submit',function(event) {
    $.ajax({
        url: '_home.php',
        type: 'POST',
        dataType: 'json',
        data: $('#myformid').serialize(),
        success: function( data ) {
            for(var id in data) {
                //jQuery('#' + id).html(data[id]); // This will also work
                document.getElementById(id).innerHTML = data[id];
            }
        }
    });
    return false;
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM