代码之家  ›  专栏  ›  技术社区  ›  Naveed

PHP:在AJAX/JSON中提交表单时出现问题?

  •  0
  • Naveed  · 技术社区  · 14 年前

    目前我有以下代码:

    主页.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>
    

    _主页.php

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

    阿贾克斯.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"}
    

    问题

    我要装货 我的文本1 分区和 价值 在中使用json数据的DIV_主页.php

    我正在使用 this answer 要在链接上执行相同的任务,请单击事件。但是如何在提交表格时做到这一点呢?

    谢谢

    3 回复  |  直到 7 年前
        1
  •  1
  •   philo    14 年前

    你只想解析JSON并将div设置为它包含的值,对吗?

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

    (前一张海报的语法可能更像您所追求的,并且可能更兼容跨浏览器,但不包括JSON解析。)

        2
  •  1
  •   mqsoh    14 年前

    for (prop in data){
        $('#' + prop).html(data[prop]);
    }
    
        3
  •  1
  •   Naveed    14 年前

    以下是我完整的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;
    });