在PHP中我正在处理表单已提交时,值应该发送到不同的文件使用jquery。例如,如果已经提交了demo.php表单,则数据应同时发送到process1.php和process2.php但它没有显示任何错误而无法获得输出。 请帮助我完成我迄今为止尝试过的代码
Demo.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>main form</title>
</head>
<body>
<form action="multi.php" method="post">
Name:<input id ='myname'>
<input type="button" id="btn" value="send to all">
</form>
<script
src="https://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
crossorigin="anonymous"></script>
<script type="text/javascript">
$(function(){
$('#btn').click(function(){
var username = $('#myname').val();
/*first post*/
$.post('multi1.php',{name:username},function(result){
$('#display').append("<br>"+result);
});
$.post('multi2.php',{name:username},function(result){
$('#display').append("<br>"+result);
});
});
});
</script>
</body>
multi1.php
<?php
echo "this is process1";
echo"and you have posted:".$_POST['name'];
?>
multi2.php
<?php
echo "this is process1";
echo"and you have posted:".$_POST['name'];
?>
答案 0 :(得分:1)
这样的事情:
let formID = $("uFormId");
formID.submit(function(event) {
event.preventDefault(); // Stop to call URL
$.ajax({url: "multi1.php", data: formID.serialize() ,type: 'POST', success: function(data) {
console.log("Response from multi1 PHP: " + data);
//OR
$('#display').innerText = data;
}
$.ajax({url: "multi2.php", data: formID.serialize(),type: 'POST', success: function(data) {
console.log("Response from multi2 PHP: " + data);
}
}
但是,有几种艺术可以通过javascript制作这个活动,你可以在jQuery AJAX submit form
中找到很多这样的活动。答案 1 :(得分:1)
以下代码对我来说很好:
<!DOCTYPE html>
<html>
<head>
<title>main form</title>
</head>
<body>
<form>
Name:<input id ='myname'>
<input type="button" id="btn" value="send to all">
</form>
<div id="display"></div>
<script
src="https://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
crossorigin="anonymous"></script>
<script>
$(document).ready(function(){
$('#btn').click(function(){
var username = $('#myname').val();
/*first post*/
$.post('multi1.php',{name:username},function(result){
$('#display').append("<br>"+result);
});
/*second post*/
$.post('multi2.php',{name:username},function(result){
$('#display').append("<br>"+result);
});
});
});
</script>
</body>
</html>
<强> multi1.php 强>:
<?php
echo 'Posted on multi1.php - '.$_POST['name'];
?>
<强> multi2.php 强>:
<?php
echo 'Posted on multi2.php - '.$_POST['name'];
?>
当我在文本框中输入'test'并点击'send to all'按钮时,我得到的输出是:
发表于multi1.php - 测试
发表于multi2.php - test
答案 2 :(得分:0)
检查您要发布的文件名,我假设您尝试从其他php
页面访问已发布的变量而不进行存储。
一般情况下,如果您发出HTTP请求(在您的情况下,它是POST
),浏览器会将该值发送到另一页并忘记它,当您尝试从其他页面访问该值时页面(如,process1.php)它将返回一个空字符串,因为它没有存储变量。
所以,解决方案是使用javaScript将值存储在localstorage
中,并尝试从其他页面访问该变量。
这是更新的代码
$(function(){
$('#btn').click(function(){
var $username = $('#myname').val();
window.localStorage.setItem('username', $username);
});
});
并使用
获取存储的值var $userName = window.localStorage.getItem('username')