【问题标题】:Ajax function not sending data onclickAjax 函数在点击时不发送数据
【发布时间】:2013-11-29 06:50:08
【问题描述】:

问题解决了!!!

怎么做?

首先是这个错误:

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

如你们所说,需要改变什么:

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

但是我的服务器设置也存在另一个问题,它需要(我不知道原因)一个指向 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,此时这是一个简单的 echo 测试语句:

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

有人知道我的代码到底哪里错了吗?提前谢谢你。

【问题讨论】:

    标签: javascript php jquery html ajax


    【解决方案1】:

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

    所以试试这个-

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

    【讨论】:

    • 不幸的是无法正常工作。我现在坚持了 12 小时 :-(
    • 你在htmlconsole.log(html)得到什么?
    • Uncaught SyntaxError: Unexpected token
    • 在函数开始时提醒rate的值
    • 警报总是以正确的值正确显示。不管 alert 是放在最前面还是在 success 函数中。但是 type: 'POST' here 是正确的还是我需要将其更改为 JSON 类型?当我喜欢提交普通的 ajax 表单时,我从来没有遇到过任何麻烦,但是这个 onclick 的事情似乎有所不同。
    【解决方案2】:

    检查这个 -

    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;
    }
    

    【讨论】:

    • 能否请您控制台日志并粘贴什么 html 作为 ajax 请求成功的响应返回??
    • 资源被解释为脚本但以 MIME 类型 text/html 传输:
    【解决方案3】:

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

    既然您在函数中将速率作为参数传递,为什么不直接将它传递到您的 ajax 请求中呢?

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

    【讨论】:

      【解决方案4】:

      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
      

      【讨论】:

        【解决方案5】:

        请尝试

        data
        {
         rate:rate
        },
        

        会有用的

        【讨论】:

          【解决方案6】:

          而不是

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

          使用

          data: {'rate': rate}
          

          data: 'rate=' + rate
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-05-28
            • 1970-01-01
            • 2012-08-21
            • 2020-03-25
            • 2020-09-19
            • 2017-01-12
            相关资源
            最近更新 更多