【问题标题】:jQuery form doesn't sendjQuery 表单不发送
【发布时间】:2011-04-13 18:21:45
【问题描述】:

我有这种奇怪的情况,我的表单没有发送任何数据,但是页面(应该只在发送数据时显示)显示。

我现在有这个代码:


     [..]
     if(form == true){
      var gender = $("input[@name='rgender']:checked").val();
      var data = "name="+$("#name").val()+"&gender="+gender+"&country="+$("#country").val()+"&address="+$("#address").val()+"&zip="+$("#zip").val()+"&city="+$("#city").val()+"&mail="+$("#mail").val()+"&phone="+$("#phone").val()+"&checkin="+$("#checkin").val()+"&guests="+$("#guests").val()+"&time="+$("#time").val()+"&nights="+$("#nights").val()+"&remarks="+$("#remarks").val();
      $.ajax({
       url: "http://www.domain.nl/tmp/process.php", 
       type: "GET",    
       data: data,       
       cache: false,
       success: function(){
        $("#content").empty();
        $("#content").load('http://www.domain.nl/tmp/process.php');
       }
      });
      f.preventDefault();
     }
     [..]

我之前用alert()检查了数据字符串,那个运行良好

我的 php 文件看起来像这样,但我没有得到任何值

<?php
echo("GET: ".$_GET['name']);
?>

【问题讨论】:

  • 您是否在远程域上执行 GET?如果是这种情况,由于相同的来源政策,您的回复将为空。
  • 不,它在同一个服务器/域上,但如果我使用 ../../process.php 没有任何反应

标签: javascript php jquery send


【解决方案1】:

也许这会有所帮助:

   success: function(result){
    $("#content").html(result);
   }

在您的代码中,您发送了 2 个 ajax 请求。首先使用 $.ajax 和一些 GET 参数,然后使用 $().load,但没有任何参数。 所以实际上你可以把你的代码简化成这样:

if(form == true){
   var gender = $("input[@name='rgender']:checked").val();
   var data = "name="+$("#name").val()+"&gender="+gender+"&country="+$("#country").val()+"&address="+$("#address").val()+"&zip="+$("#zip").val()+"&city="+$("#city").val()+"&mail="+$("#mail").val()+"&phone="+$("#phone").val()+"&checkin="+$("#checkin").val()+"&guests="+$("#guests").val()+"&time="+$("#time").val()+"&nights="+$("#nights").val()+"&remarks="+$("#remarks").val();
   $("#content").load('http://www.cherrytrees.nl/tmp/process.php', data);
   f.preventDefault();
}

【讨论】:

  • 我认为这不是问题,因为我得到以下输出:GET: 就像它是空的一样
  • 这是问题所在 :) 我已经编辑了我的帖子并给出了一些解释
  • 嗯..我尝试了你的解决方案,但我仍然得到空值.. process.php 加载,但其中没有数据
  • 哦,对不起,我在第一个代码 sn-p 中犯了一个错误。应该有 $("#content").html(result);。尝试改变你的成功:函数到我发布的那个。
  • 好吧,也许我智障了,但这两个选项在这里都不起作用:(第二个实际上发送了我的表单(所以 preventDefault)不知何故不起作用,第一个仍然给我没有数据(尽管 process.php 加载)
【解决方案2】:

如下修改:

url: "http://www.cherrytrees.nl/tmp/process.php?" + data,

在您的原始请求中,您是通过 POST 而不是 GET 发送的。

【讨论】:

  • 它通过 GET 发送...type: "GET"
  • 我刚刚测试了相同的 ajax 请求 - 它适用于我。所以这不是问题。
【解决方案3】:
 url: "http://www.cherrytrees.nl/tmp/process.php", 
       type: "GET",    
       data: data,  

选项“数据”仅适用于 POST 类型,如果您不想获取参数,请将它们写入您的 URL

url.com?name="+$("#name").val()+"&gende....

【讨论】:

  • 阅读我对 xil3 帖子的评论。我认为 Nick Craver 在 OP 帖子的 cmets 中发布了正确的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-11
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多