此代码的目标是,当用户点击修改按钮时,会将此all=<?php echo $arr; ?>
发送到页面edit.php
。
这段代码什么都不做(在firebug中没有ajax调用)。
<?php
$arr = array("one", "two", "three")
?>
<div id="content">
<input class="edit" type="submit" value="Edit" />
</div>
<script type="text/javascript">
$(document).ready(function () {
$(".edit").submit(function () {
$.ajax({
url: "edit.php",
type: "post",
dataType: "html",
data: "<?php echo json_encode( $arr ); ?>",
success: function (data) {
$('#ad').html(data);
}
});
});
});
</script>
答案 0 :(得分:2)
编辑正如@MilanJaric所示,您需要操作提交按钮的click
。但是,您还应该阻止点击的默认操作。 结束修改
您需要回显json_encoded并用引号括起来的数据:
<div id="content">
<input class="edit" type="submit" value="Edit" />
</div>
<script type="text/javascript">
$( function()
{
$( '.edit' ).click( function( e )
{
$.ajax( {
url: 'edit.php;,
type: 'post',
dataType: 'html',
data: '<?php echo json_encode( $arr ); ?>',
/* It's hard to tell based on your code, but if you wanted a var at the server named "all" use this instead of the above line:
data: {
all: '<?php echo json_encode( $arr ); ?>'
},
*/
success: function( data )
{
$( '#ad' ).html( data );
}
} );
e.preventDefault();
} );
} );
</script>
然而,IMO,在你的JS中回应PHP真的很难看,特别是如果你必须做很多事情,所以当需要时,我使用IIFE将PHP数据注入到代码中一个JS var。这允许我隔离IIFE调用的所有PHP回显:
<?php
$arr = array("one", "two", "three")
?>
<div id="content">
<input class="edit" type="submit" value="Edit" />
</div>
<script type="text/javascript">
( function( arr )
{
$( function()
{
$( '.edit' ).click( function( e )
{
$.ajax( {
url: 'edit.php;,
type: 'post',
dataType: 'html',
data: arr,
/* It's hard to tell based on your code, but if you wanted a var at the server named "all" use this instead of the above line:
data: {
all: arr
},
*/
success: function( data )
{
$( '#ad' ).html( data );
}
} );
e.preventDefault();
} );
} );
}(
'<?php echo json_encode( $arr ); ?>'
) );
</script>
答案 1 :(得分:2)
除了其他人指出json_encode()
$arr
<input>
的需要之外,jQuery documentation for .submit()指出了以下内容:
当用户尝试时,提交事件将发送到元素 提交表格。它只能附加到&lt; form&gt;元件。
因此,我认为甚至没有提交AJAX的原因是您的<form>
元素不在<?php
$arr = array("one", "two", "three");
?>
<form id="content">
<input class="edit" type="submit" value="Edit" />
</form>
<script type="text/javascript">
$(document).ready(function () {
$(".edit").submit(function () {
$.ajax({
url: "edit.php",
type: "post",
dataType: "html",
data: "all=<?php echo json_encode($arr); ?>",
success: function (data) {
$('#ad').html(data);
}
});
});
});
</script>
元素内。请尝试以下方法:
{{1}}
答案 2 :(得分:1)
JavaScript submit
事件仅发生在<form>
而非个人<input>
上。
您需要以下HTML:
<div id="content">
<form id="whatever">
<input class="edit" type="submit" value="Edit" />
</form>
</div>
在JavaScript中改变:
$( '.edit' ).submit( function()
到
$( '#whatever' ).submit( function()
答案 3 :(得分:0)
<script type="text/javascript">
$(document).ready(function () {
$(".edit").click(function () {
$.ajax({
url: "edit.php",
type: "post",
dataType: "html",
data: "all=<?php echo $arr; ?>",
success: function (data) {
$('#ad').html(data);
}
});
});
});
</script>
答案 4 :(得分:0)
使用json_encode将php数组编码为json字符串 http://php.net/manual/en/function.json-encode.php
答案 5 :(得分:0)
你正在回显一个数组,这将使PHP回显像Array(),而不是真正的值。 尝试var_dump($ arr);转储数组,并最终尝试序列化数组,以后更容易检索其状态。 如果ajax调用确实可以使用静态数据,那么这就是你应该开始查看的地方。