Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:在AJAX/JSON中提交表单时出现问题?_Php_Jquery_Ajax_Json - Fatal编程技术网

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

PHP:在AJAX/JSON中提交表单时出现问题?,php,jquery,ajax,json,Php,Jquery,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 i

目前我有以下代码:

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>
$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"}
问题: 我想在textoneDIV中使用json数据加载mytext1值,在textwoDIV中加载mytext2

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


在成功功能中感谢

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

在成功函数中

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()基本上就是这样做的,但是它保证如果“data”包含一些讨厌的代码而不是简单的对象,它将不会被计算。

您只想解析该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;
});

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

尝试:
alert(数据['textone'])
@sarfraz:它是为一个div硬编码的。我希望所有div都使用json数据进行循环。请尝试:
alert(data['textone'])
@sarfraz:它是为一个div硬编码的。我希望所有div都使用json数据进行循环。我在这里也回答了完整的解决方案。如果响应中的内容类型头设置为application/json,jQuery将在传递给success函数的数据参数中自动解析它。我在这里也回答了完整的解决方案。如果响应中的内容类型头设置为application/json,jQuery将在传递给success函数的数据参数中自动解析它。