我在stackoverflow中搜索过这个问题并找到了一些答案,但是没有答案对我有所帮助。所以我再次发布它。我的php表单在localhost中的post方法工作正常,但相同的代码不在服务器(Linux服务器)工作我不知道实际的问题是什么。请帮助
<form class="forma" id="forma" method="POST" action="contact-form.php" name="myForm" autocomplete="off">
<div class="formWrapper">
<div class="group">
<input type="text" name="name" id="name">
<span class="highlight"></span>
<span class="bar"></span>
<label>Name</label>
<p class="error-red"></p>
</div>
<div class="group">
<input type="text" name="eMail" id="eMail">
<span class="highlight"></span>
<span class="bar"></span>
<label>Email</label>
<p class="error-red"></p>
</div>
<div class="group">
<input type="text" name="mobileNo" id="mobileNo">
<span class="highlight"></span>
<span class="bar"></span>
<label>Mobile no.</label>
<p class="error-red"></p>
</div>
<div class="group">
<input type="text" name="message" id="message">
<span class="highlight"></span>
<span class="bar"></span>
<label>Message</label>
</div>
<div class="captchaWrapper">
<img src="captcha.php?rand=<?php echo rand(); ?>" id="captchaimgCont" style="margin-right: 14px;" alt="captcha">
<a href="javascript: refreshCaptcha();" class="clickTorefreshAnchor">
<i class="fa fa-refresh clickTorefresh" id="caprefresh">
</i>
</a>
<div class="captchaInputWrapper group">
<input type="text" id="6_letters_code" name="captcha">
<span class="highlight"></span>
<span class="bar"></span>
<label>Enter the code here:</label>
<p class="error-red"></p>
</div>
</div>
<div class="submit submitBtn" id="consubmit">
<button type="submit" name="sendmail" id="sendmail" class="sendMailBtn">Submit
</button>
</div>
</div>
<div class="clear"></div>
</form>
jQuery(document).ready(function() {
jQuery("#forma").submit(function(e) {
e.preventDefault();
e.stopImmediatePropagation();
jQuery('#sendmail').html('Please wait...');
jQuery.ajax({
type: "post",
url: './contact-form.php',
data: jQuery("#forma").serialize(),
dataType: "json",
success: function(data) {
jQuery('p.error-red').html('');
if ('success' == data.result) {
//jQuery("#forma")[0].reset();
//jQuery('#response').append('<p class="successMessage">' + data.msg + '</p>');
// jQuery('#sendmail').html('Submit');
window.location.href = "https://www.mrpmediaworks.com/thanks.php";
}
if ('error' == data.result) {
var arr = data.msg;
var element_arr = data.fieldname;
count = '0';
jQuery.each(arr, function(index, value) {
if (value.length != 0) {
jQuery('input[name=' + element_arr[count] + ']').parent('.group').find('p.error-red').html(value);
}
count++;
});
jQuery('#sendmail').html('Submit');
}
}
});
return false;
});
});
<?php
session_start();
require_once('config.php');
$email = '';
$fieldname = array();
$msg = array();
$result = '';
$count = '';
$name = $_Post["name"];
$contact = $_Post["mobileNo"];
$email = $_Post["eMail"];
$msg_query = $_Post["message"];
$captcha = $_Post["captcha"];
echo $name;
die();
?>
只测试代码
相同的代码适用于get
我尝试从表单中移除操作,可能组合但注意工作。 编辑后
4. .htaccess file
# browser requests PHP
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]
# check to see if the request is for a PHP file:
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)$ /$1.php [L]
这是我的htaccess文件中的唯一内容
答案 0 :(得分:1)
我认为你搞砸了你的htaccess文件。如果可能,请在此处粘贴.htaccess文件代码。
编辑我的回答
Bingo发现你要从你的文件中删除.php扩展名的问题,但是在ajax请求中你已经将数据发布到contact-form.php。尝试从你的ajax请求中删除.php扩展名。试试希望这会有所帮助。
答案 1 :(得分:0)
只需创建一个函数来处理ajax请求。然后在函数内处理请求。为此,
从表单中删除操作。并将请求发送到提交上的功能,请参阅下面的例如。
<form class="forma" id="forma" method="POST" action="javascript:void(0);" name="myForm" autocomplete="off" onsubmit="sendContactRequest();">
然后~sendContactRequest()〜将处理你的ajax请求。
function sendContactRequest(){
jQuery('#sendmail').html('Please wait...');
$.post("contact-form.php",jQuery("#forma").serialize(),function(result,status,xhr) {
if( status.toLowerCase()=="error".toLowerCase() ) {
alert("An Error Occurred.."); // or do something that you can handle the error request.
}else { //success response
}
});
}
请尝试一下。在我的情况下,它运作正常。