Ajax函数不会发送数据onclick

时间:2013-11-29 06:50:09

标签: javascript php jquery html ajax

问题已解决!!!

怎么样?

首先,错误是这一个:

数据:'rate'+ $('rate')。val(),

需要改变的是你所有人告诉我的权利:

数据:'rate ='+ rate或data:{rate:rate},

但是我的服务器设置也存在另一个问题,它需要(我不知道原因)是php文件的absolt 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;

有没有人看到我的代码出错的地方?提前谢谢。

6 个答案:

答案 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);
     }
 });
});

答案 1 :(得分:1)

传递data一个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

答案 2 :(得分: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;
}

答案 3 :(得分:1)

选择器$('rate')正在尝试查找类型为rate的节点,该节点很可能在您的标记中不存在。

由于您将费率作为参数传递给函数,为什么不直接将其传递给ajax请求?

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

答案 4 :(得分:1)

请尝试

data
{
 rate:rate
},

它会起作用

答案 5 :(得分:1)

而不是

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

使用

data: {'rate': rate}

data: 'rate=' + rate