【问题标题】:if(isset... doesn't work when loading the php file onsubmit with javascriptif(isset... 在使用 javascript 加载 php 文件 onsubmit 时不起作用
【发布时间】:2015-06-16 17:33:33
【问题描述】:

我在加载 php 函数 if(isset... 到带有 onsubmit 函数的表单的页面时遇到了一个小问题:

function functionlol() {

$('#phptestlol').load('system/phptest.php');

}

现在,phptest.php 包含以下内容:

if(isset($_POST['test'])){
echo "Working with submission also";
}

echo "Working";

而带有表单的html看起来是这样的:

<span id='phptestlol'></span>

<form method='POST' onsubmit='functionlol()' target='test'>
<input type='submit' name='test' value='Submit'>
</form>

我做了 target='test' 因为我不想刷新页面。 当我单击提交按钮时,它会加载 php 文件,但它只显示“工作”回显,并且不回显“也在提交工作”......我应该怎么做才能让它工作?谢谢!

编辑 整个 HTML:

<html>
<head>
<script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>


<script>

$('form').submit(function(event) {
    event.preventDefault();
    $('#phptestlol').load('system/phptest.php', {test:1});
});

</script>

</head>
<body>
<iframe name='test' style='display:none;'></iframe>

<span id='phptestlol'></span>

<form method='POST' target='test'>
<input type='submit' name='test' value='Submit'>
</form>
</body>
</html>

PHP (phptest.php):

<?php
error_reporting(E_ALL); ini_set('display_errors', 1);
if(isset($_POST['test'])){
    echo "submitted";
}
?>

【问题讨论】:

  • $('#phptestlol').load('system/phptest.php', {'test':1}); 试试这个
  • 您没有向函数发送任何内容,因此没有发布任何内容。
  • 因为他的示例代码在 {'test':1} 中发送了 POST 信息,但这不是您真正应该这样做的方式。
  • @Clyff $().load() 是 jQuery 中的 AJAX 函数
  • 真正的问题是;他们应该首先“研究”语法;-)

标签: javascript php


【解决方案1】:

让我们做一些调整,并从头到尾利用 jQuery。首先是 HTML -

<span id='phptestlol'></span>

<form method='POST' target='test'>
    <input type='submit' name='test' value='Submit'>
</form> 

注意删除所有内联 JavaScript。现在为 PHP -

if(isset($_POST['test'])){
    echo "submitted";
}

现在是锦上添花,jQuery

$(document).ready(function() {
    $('form').submit(function(event) {
        event.preventDefault(); // prevents the default action of the submit button
        $('#phptestlol').load('system/phptest.php', {test:1});
    });
});

这里我们阻止了点击提交按钮的默认动作。我们还为 $_POST 数组 ({test:1}) 发送了一个值,因此 isset($_POST['test']) 将按预期工作。

【讨论】:

  • 那么在这种情况下,是不是需要添加onsubmit函数呢?但是,所有提交的表格看起来都一样吧?或者 $('form') 是表单的名称或类似的名称?
  • 没错,不需要onsubmit()$('form') 是我们目前唯一的表单,但您可以为您拥有的任何特定表单使用类、名称或 ID。
  • 哦,就这么简单!所以如果有form class='test',那么js就是$('.test')吧?作为 js 的初学者,我认为使用 jQuey、AJAX 等会更难做到这一点,但我很惊讶……它工作得很好!
  • 带有类测试的表单是$('.test'),但是是的,它只是那么简单。
  • @JayBlanchard - 有效! :3 非常感谢!
猜你喜欢
  • 2018-10-04
  • 1970-01-01
  • 2016-04-14
  • 1970-01-01
  • 1970-01-01
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多