jQuery Ajax发布无法发送数据

时间:2019-08-24 05:56:37

标签: jquery

我有HTML表单,数据发送到本地PHPscript,并通过jQuery发送到远程php。问题是我无法将数据发送到远程PHP,为此,我尝试使用jQuery Ajax。

html代码:

<!DOCTYPE HTML>  
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>
<body>
<script type="text/javascript" src='jquery.js'></script>
<script type="text/javascript" src='e.js'></script>
<h2>PHP Form Validation Example</h2>
<p><span class="error">* required field</span></p>
<form method="post" id="registration" action="function.php">  
  Name: <input type="text" id="nameq" name="name" value="">
  <span class="error">* </span>
  <br><br>
  E-mail: <input type="text" id="email" name="email" value="">
  <span class="error">* </span>
  <br><br>
  Website: <input type="text" id="website" name="website" value="">
  <br><br>
  Comment: <textarea id="comment" name="comment" rows="5" cols="40"></textarea>
  <br><br>
  Gender:
  <input type="radio" id="gender" name="gender" value="female">Female
  <input type="radio" id="gender" name="gender" value="male">Male
  <input type="radio" id="gender" name="gender" value="other">Other  
  <span class="error">* </span>
  <br><br>
  <button id="button" type="submit" form="registration">Submit</button>
</form>
</html>

e.js:

$(document).ready(function() {
    $("#button").click(function() {
        var cln = $("#nameq").val();
        $.post("https://test/index.php", {"cln": cln});
    });
});
  1. 如果$("#button").click(function() Mozilla Firefox 68显示“ NS_BINDING_ABORTED”,Chrome 76无法发送
  2. 如果$("#button").submit(function() Mozilla Firefox不显示任何内容,无法发送,Chrome无法发送
  3. 有一种解决方案$.ajaxSetup({async: false}),两种浏览器都可以正常运行,但我不想使用它

我在做什么错,仅更改e.js有解决方案吗?谢谢

2 个答案:

答案 0 :(得分:0)

欢迎来到Stackoverflow!

在您的情况下,发生的情况是<button type="submit">在调用click事件之前提交了表单。每当提交表单时,您将需要使用jQuery submit事件来触发该事件

$( document ).ready(function() {
    $("#registration").submit(function( event ) {
        event.preventDefault();
        var url = $(this).attr('action');
        var cln = $("#nameq").val();
        $.post(url, {"cln": cln});
    });
});

在这里,关键是方法调用event.preventDefault()

引用文档

  

jQuery的Submit事件在实际提交之前触发,因此我们可以   通过对此事件对象的调用取消提交事件。

答案 1 :(得分:0)

很抱歉,我的问题不清楚,但我认为存在误解。我的目标是我希望在本地php脚本-function.php和远程php-https://test/index.php中接收数据。现在:

$(document).ready(function() {
    $("#registration").submit(function(event) {
        event.preventDefault();
        var cln = $("#nameq").val();
        $.post("https://test/index.php", {"cln": cln});
    });
});

我可以在远程php脚本中接收数据,但随后数据不会发送到本地php-function.php。使用$ .ajaxSetup({async:false}):

$(document).ready(function() {
    $("#button").click(function() {
        var cln = $("#nameq").val();
        $.ajaxSetup({async: false});
        $.post("https://test/index.php", {"cln": cln});
    });
});

有延迟(我的网站正在等待来自远程php脚本的答复),我不喜欢它。我想同时将数据发送到本地和远程php脚本