我正在尝试使用jQuery发送表单的数据。但是,数据没有到达服务器。你能告诉我我做错了什么吗?
// FORM <form id="contactForm" name="contactForm" method="post"> <input type="text" name="nume" size="40" placeholder="Nume"> <input type="text" name="telefon" size="40" placeholder="Telefon"> <input type="text" name="email" size="40" placeholder="Email"> <textarea name="comentarii" cols="36" rows="5" placeholder="Message"> </textarea> <input id="submitBtn" type="submit" name="submit" value="Trimite"> </form>
使用Javascript:
Javascript Code in the same page as the form: <script type="text/javascript"> $(document).ready(function(e) { $("#contactForm").submit(function() { $.post("getcontact.PHP",$("#contactForm").serialize()) //Serialize looks good name=textInNameInput&&telefon=textInPhoneInput---etc .done(function(data) { if (data.trim().length >0) { $("#sent").text("Error"); } else { $("#sent").text("Success"); } }); return false; }) }); </script>
而服务器端:
/getcontact.PHP $nume=$_REQUEST["nume"]; // $nume contains no data. Also tried $_POST $email=$_REQUEST["email"]; $telefon=$_REQUEST["telefon"]; $comentarii=$_REQUEST["comentarii"];
你能告诉我我做错了什么吗?
编辑:
检查了var_dump($ _ POST),并返回一个空数组。
奇怪的是,在本地机器上测试的相同代码工作正常。
如果我将文件上传到我的主机空间,它将停止工作。
我尝试做一个老式的表单,而不使用jquery,所有的数据是正确的。
我看不出这将是一个服务器配置问题。有任何想法吗?
谢谢!
解决方法
您可以使用此功能
var datastring = $("#contactForm").serialize(); $.ajax({ type: "POST",url: "your url.PHP",data: datastring,dataType: "json",success: function(data) { //var obj = jQuery.parseJSON(data); if the dataType is not specified as json uncomment this // do what ever you want with the server response },error: function() { alert('error handing here'); } });
返回类型是json
编辑:我使用event.preventDefault
防止浏览器在这种情况下提交。