目前我有以下代码:
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"}
我想在 textone DIV中加载 mytext1 值,在 texttwo DIV中使用json数据加载 mytext2 值_home.php
提示:我正在使用this answer在链接点击事件上执行相同的任务。但是如何在表单提交上执行此操作?
由于
答案 0 :(得分:1)
在成功函数中
for (prop in data){
$('#' + prop).html(data[prop]);
}
答案 1 :(得分:1)
你只想解析那个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'包含一些讨厌的代码而不是一个简单的对象,它将不会被评估。
答案 2 :(得分:1)
这是我完整的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;
});