javascript - 我可以使用我的 jQuery AJAX post 方法数据键连接到我的 php 文件吗?

标签 javascript php jquery ajax

我一直在尝试将用户提交的逗号分隔字符串连接到一个 php 文件,该文件将通过单击时调用的 Javascript 函数进行各种计算。 从我的 html 页面开始

  <div class="button-holder">
        <?php if(!$voted):?>
      <a href="" onclick="javascript:submitvote('voteIFC');"   class="button">Submit Poll<span></span></a><?php endif;?>
 </div>

一旦点击它,我就尝试使用 ajax post 方法异步连接到 php(如果有条件)并将其输入数据库

    function submitvote(uv){
     document.getElementById('rank_ul').innerHTML='<img src="ajax-loader.gif">';
   var uv= $('ul.sort').sortable('toArray').join(',');
   var url= "results.php";
  $.post(url,
   {userOrder:uv},
   function(data){
   document.getElementById('rank_ul').innerHTML= 'return_data'
   });

    };

但我似乎无法弄清楚如何连接此 ajax 函数(其目的是收集可排序的顺序)并将其发送到 php 文件以进行进一步计算和数据库条目。我尝试了很多不同的东西,但读到你可以通过引用 $.post 的数据键(称为“userOrder”)将 $.Post 连接到 if 条件

 <?php

   if(!defined('INCLUDE_CHECK')) die('You are not allowed to execute this    file directly');

  // If the poll has been submitted:
  $userOrder= $_POST['userOrder'];


if($userOrder=='voteIFC'){


// The data arrives as a comma-separated string,
// so we extract each post ids:
$data=explode(',',str_replace('li','',$_POST['sortdata']));

// Getting the number of objects
list($tot_objects) = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM sort_objects"));

if(count($data)!=$tot_objects) die("Wrong data!");

foreach($data as $k=>$v)
{
    // Building the sql query:
    $str[]='('.(int)$v.','.($tot_objects-$k).')';
}

$str = 'VALUES'.join(',',$str);

// This will limit voting to once a day per IP:
mysql_query("   INSERT INTO `sort_votes` (ip,date_submit,dt_submit)
                VALUES ('".$_SERVER['REMOTE_ADDR']."',NOW(),NOW())");

//  If the user has not voted before today:
if(mysql_affected_rows($link)==1)
{
    mysql_query('   INSERT INTO `sort_objects` (id,votes) '.$str.'
                    ON DUPLICATE KEY UPDATE votes = votes+VALUES(votes)');
}

}

在有条件的情况下,使用 $.post 的数据键不是将数据传递给 PHP 的可行选择吗? 再次感谢大家分享您的知识。

最佳答案

您没有发送 sortdata 并用排序数据覆盖 userOrder,因为 sortData 函数中的参数 uv 是再次声明并初始化。因此 if($userOrder=='voteIFC') {} 不会在 PHP 中执行。

试试下面的代码:

function submitvote(uv){
     document.getElementById('rank_ul').innerHTML='<img src="ajax-loader.gif">';
     var sortdata = $('ul.sort').sortable('toArray').join(',');
     var url= "results.php";
     $.post(url, {userOrder:uv, sortdata: sortdata}, function(data){
         document.getElementById('rank_ul').innerHTML= 'return_data'
     });
}

还可以考虑将 li 附加到选择器:

var sortdata = $('ul.sort li').sortable('toArray').join(',');

有了这个更新,您不必在 php.ini 中删除 li 标签。

关于javascript - 我可以使用我的 jQuery AJAX post 方法数据键连接到我的 php 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30429616/

相关文章:

javascript - ReactJS:组件不会在状态更改时重新渲染

javascript - 浏览器因 Angular $http 函数而挂起

javascript - 从 textarea 中删除顶行的最简洁(和快速)方法

jquery - 引导页脚未显示完整页面宽度

javascript - for 循环中的 jQuery click() 函数显示意外行为

javascript - 在 Postman 预请求脚本中获取 Azure REST 访问 token

javascript - Mapbox GL JS Canvas 在 Bootstrap 模式中无法正确显示

javascript - 将外部标记正确加载到多个页面中

php - 如何在 Linux 上使用 PHP 将 HTML/CSS 转换为 PDF

php - 更改 Magento 服务器和 MySQL 错误