我一直在尝试将用户提交的逗号分隔字符串连接到一个 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/