2013-11-29 58 views
0

问题已解决!Ajax函数不发送数据onclick

如何?

所有的错误首先是这个:

数据:“率” + $(“率”)VAL(),

什么需要得到改变,你都告诉我的权利:

数据:“率=” +率,或数据:{:速率},

,但也有另一种问题,我的服务器设置以及它需要(我不知道的原因)的absolt到PHP文件的URL而不是亲戚。

非常感谢您的时间和您的帮助!


我对评级脚本的onclick元素有些问题。当用户点击其中一个字段时,该值应该通过ajax post方法发送。

<li id="rating-boxes-rate" onclick="rateFunction(1)"></li> 
<li id="rating-boxes-rate" onclick="rateFunction(2)"></li> 
<li id="rating-boxes-rate" onclick="rateFunction(3)"></li> 
<li id="rating-boxes-rate" onclick="rateFunction(4)"></li> 
<li id="rating-boxes-rate" onclick="rateFunction(5)"></li> 

的javsscript代码:

function rateFunction(rate){ 
    $.ajax({ 
     url: '../rate.php',     //rate.php location in parent folder 
     type: 'POST', 
     data: 'rate' + $('rate').val(), 
     success: function(html){ 
        alert('Rating: ' + rate);   //just to check, will be deleted later 
        $('#message_success').html(html); //message div id located in my html to show the outcome 
     } 
    }); 
    return false; 
} 

此时警报被正确显示可惜的数据没有得到发送到rate.php它在这一点上是用于测试的简单的回声声明:

$rate = $_POST['rate']; 
echo $rate; 

有没有人看到我的代码在哪里错了?先谢谢你。

回答

1

通过data a json

data: { 
    rate : rate 
} 

注意,它总是key然后value

<input type="text" id="foo_bar" /> 

data : { 
    foo : "bar", 
    foobar : $("#foo_bar").val() 
} 

然后在你的PHP

$foo = $_POST["foo"] 
$foobar = $_POST["foobar"] 
echo $foo; // shows bar 
echo $foobar; // shows the value of the text box 
+0

也不行。 – StephanBo

+0

它在控制台中有错误吗? –

2

我不认为$('rate').val()意味着什么;并且您想要将速率值(例如 - 1,2,3 ..)传递给php。

因此,尝试这个 -

data: { 
    rate: rate 
}, 

代替 -

data: 'rate' + $('rate').val(), 

在侧面说明,你不应该使用unobtrusive javascript -

你可以不喜欢它这 -

<li id="rating-boxes-rate" rate="1"></li> 
... 

<script> 
$("#rating-boxes-rate").click(function(e) { 
    var rate=$(this).attr('rate'); 
    $.ajax({ 
    url: '../rate.php',     //rate.php location in parent folder 
    type: 'POST', 
    data: {rate: rate}, 
    success: function(html){ 
     alert(html); 
    } 
}); 
}); 
+0

不幸运行。我在这个问题上困扰了12个小时:-( – StephanBo

+0

你在'html' console.log(html)'中得到了什么?' –

+0

未捕获的SyntaxError:意外的标记 – StephanBo

1

入住这一点 -

function rateFunction(rate){ 


     $.ajax({ 
      url: '../rate.php',     //rate.php location in parent folder 
      type: 'POST', 
      data: { rate : rate}, 
      success: function(html){ 
       alert('Rating: ' + this_rate);   //just to check, will be deleted later 
       $('#message_success').html(html); //message div id located in my html to show the outcome 
      } 
     }); 
     return false; 
} 
+0

你可以请控制台日志和粘贴什么HTML作为响应返回ajax请求的成功? –

+0

已经尝试过,但没有成功。但是,无论如何感谢... – StephanBo

+0

资源解释为脚本,但与MIME类型文本/ HTML传输: – StephanBo

1

的选择$('rate')试图寻找其类型为rate,它更可能不会在你的标记存在的节点。

由于您将函数中的参数作为参数传递,为什么不直接将它传递给您的ajax请求?

$.ajax({ 
    url: '../rate.php', 
    type: 'POST', 
    data: {"rate": rate}, 
    success: function(response) { 
     alert(response); 
    } 
}); 
1

请尽量

data 
{ 
rate:rate 
}, 

它会工作的

1

代替

data: 'rate' + $('rate').val() 

使用

data: {'rate': rate} 

data: 'rate=' + rate