onclick使用Ajax

时间:2016-01-20 15:10:12

标签: javascript php jquery ajax

我有一个使用拖动/拖动功能对数据进行排序的Web应用程序。我发现在IOS设备上通过safari拖放是不行的。我正在寻找一个临时解决方案,允许在我使用IOS应用程序时运行应用程序。我想知道是否有可能使用Ajax来点击我执行拖放操作的数据工作页面。这是我到目前为止所拥有的。

Page1.php包含

<!DOCTYPE html>
<html>

  <head>
    <link rel="stylesheet" href="style.css">
    <script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
    <script src="/js/script.js"></script>
    <header class="main-header" role="banner"><center>
</header>
  </head>
  <body>
  <center>
 <table>
 <tr><td>
 <div id="available" ondrop="drop('list', event)" ondragover="allowDrop(event)">
 <p> <font color="blue">SID</font> | Last, First </p> <?php 
include "database_connection.php";
///////////////////////////////////////////////////////////////////////////////////////////////
/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
else
{
}
$query = "*******";
if ($result = mysqli_query($link, $query)) {
    /* fetch associative array */
    while ($row = mysqli_fetch_assoc($result)) {
            echo "<p id='{$row["sID"]}' draggable='true' onclick='drop(event)' ondragstart='dragStart(event)' width='75' height='75'> <font color='blue'> {$row["sID"]}</font> |  {$row["lastName"]}, {$row["firstName"]}</p></a>";
    }
    /* free result set */
    mysqli_free_result($result);
}
 mysqli_close($link);
 /////////////////////////////////////////////////////////////////////////////////
?>

 </div>
 </td>
 <td>

 <div id="order" ondrop="drop('order', event)" ondragover="allowDrop(event)">
  <?php 
include "database_connection.php";
///////////////////////////////////////////////////////////////////////////////////////////////
/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
else
{
}
$query = "*********";
if ($result = mysqli_query($link, $query)) {
    /* fetch associative array */
    while ($row = mysqli_fetch_assoc($result)) {
        echo "<p id='{$row["sID"]}' draggable='true' ondragstart='dragStart(event)' width='75' height='75'><font color='blue'>  {$row["sID"]} </font>| {$row["lastName"]}, {$row["firstName"]} </p></a>";
    }
    /* free result set */
    mysqli_free_result($result);
}
 mysqli_close($link);
 /////////////////////////////////////////////////////////////////////////////////
?>

 </div>
 </td>
</tr>

  </body>

</html>

Script.js包含

function drop(containerId, e) {
  var id = event.dataTransfer.getData("id");

  console.log(id);

  $.ajax({
    url: "dataworker.php",
    type: "POST",
    data: {
      id: id,
      containerid: containerId,
      //fileName: file.name, // Your file name.
      //file: event.target.result // Your file.
    },
    success: function() {
      console.log('great success');
      window.location.reload()
      return true
    }
  });
}

function dragStart(e) {
  console.log(e);
  e.dataTransfer.setData("id", e.srcElement.id);
}

function allowDrop(e) {
  e.preventDefault();
}

第三页,Dataworker,只是通过php接受POSTS并处理它们。是否有可能让Onclick执行与drop相同的操作?我的希望是可以做到的,而且我不必使用传统的硬编码获得ahrefs来实现我的目标。重要的是要注意,因为它们也是拖放,如果我使用与拖放相同的功能,我需要考虑containerID。这样POST功能就知道它实际上是去了对面的容器,而不是它被点击的容器。

1 个答案:

答案 0 :(得分:0)

我通过添加IOS html 5拖放Shim找到了答案。 https://github.com/timruffles/ios-html5-drag-drop-shim。这是一个允许移动浏览器注册拖动的黑客攻击。 归功于TrueBlueAussie让我走上正轨。谢谢!