【问题标题】:How to get data from AJAX in PHP without using a function如何在不使用函数的情况下从 PHP 中的 AJAX 获取数据
【发布时间】:2014-11-06 22:59:02
【问题描述】:

注意:请不要再投反对票,仅仅因为您无法回答问题/或无法理解问题并不意味着您必须投反对票。我明确表示如果您也需要我,我可以提供更多信息/更具体。

为澄清而编辑的标题

我正在使用 javascript 来验证表单客户端,然后使用 ajax 将 3 个数组的数据传递到单独的 PHP 页面进行处理。只是在开始之前尝试使用其中一个数组执行基本查询。

ajax 请求说它正在工作,当我进入网络选项卡,然后单击响应时,它会显示所有具有正确值/索引的数组。

但是在 PHP 方面什么都没有发生。我不知道如何调试 PHP,因为它在不同的页面上。我假设这与我的语法有关,因为我以前也做过这个,但我在函数中使用了 ajax。我对 ajax 很陌生,所以我不太确定我是否正确执行此操作。我在页面上尝试了有效的$wpdb 查询,但没有任何反应。如何正确构建我的 PHP 页面以使用 ajax?当 ajax 触发时,我可以通过什么方式调试我的 PHP?

如果您需要更多信息,请告诉我。

AJAX 调用:

$.ajax({
type: "POST",
url: "?page_id=251",
data: { vData: videoData, tsData: tsValues, dData: tsDescriptions},
success: function(){
$("#errorMessage").text("ajax success.");
}});

?page_id=251(PHP 页面)

 <?php
 $videoData = $_POST['vData'];    // i have also tried $_GET['vData'];
 $vSRC = $videoData[0];$vTIT = $videoData[1];$vDES = $videoData[2];$vPDF = $videoData[3];$vDAT = $videoData[4];  
 $uID = get_current_user_id();

 global $wpdb;

 $wpdb->insert( $wpdb->prefix."uservideo", array(
               "user_id" => $uID,
               "video_src" => $vSRC,
               "video_title" => $vTIT,
               "video_description" => $vDES,
               "pdf_file" => $vPDF,
               "video_date" => $vDAT
            ));

 ?>

【问题讨论】:

  • 您的网址显示为?page_id=251。您知道这将发布到 index.php/index.html,并且正在执行 GET/POST 请求的奇怪组合?我不认为这是你想要的。您可能打算引用实际文件...
  • 我正在使用永久链接页面的 wordpress。这是一个有效的本地,如果我也改变它:?page_id=fkdjkfhdsfk,ajax 不起作用。在我的另一个 ajax 调用中,我使用了相同的语法并且它可以工作。现在我没有使用函数,我的 PHP 无法处理 ajax 数据。
  • 您没有正确实现 Ajax,这不是 WordPress 推荐的。您应该阅读Intro to Ajax 或直接跳转到Ajax in plugins (just ignore the word plugins here)
  • 我必须使用自定义页面,没有插件。这是一个简单的 ajax 调用。如果没有正确实现,ajax 调用将根本不起作用。问题是抓取数据并在 PHP 上使用它。
  • 这里是文档,codex.wordpress.org/AJAX_in_Plugins 请尝试一些事情并在准备好时提出更具体的问题

标签: javascript php ajax wordpress


【解决方案1】:

我找到了问题的解决方案。 我需要用 ajax 调用一个函数,不能只调用一个页面。我确定您可以直接调用该页面,但没有人知道它有多明显。

AJAX

    <script type="text/javascript">
    function insert_data(vidData,timesData,descData){
      $.ajax({
          url: '?page_id=251', 
          type: 'POST',
          data: {action: 'insert_video', vData: vidData, tsData: timesData, dData: descData },
          dataType: 'json',
          success: function(response){
            alert('dhsdhjsdjhsjhdjhsd');
          }
      });
    }
</script>

PHP

<?php
function insert_video($videoData,$tsValue,$tsDesc){
 $videoData = $_POST['vData'];
 $vSRC = $videoData[0];$vTIT = $videoData[1];$vDES = $videoData[2];$vPDF = $videoData[3];$vDAT = $videoData[4];
 $tsValue = $_POST['tsData'];
 $tsDesc = $_POST['dData'];
 $uID = get_current_user_id();

 global $wpdb;

 $wpdb->insert( $wpdb->prefix."uservideo", array(
               "user_id" => $uID,
               "video_src" => $vSRC,
               "video_title" => $vTIT,
               "video_description" => $vDES,
               "pdf_file" => $vPDF,
               "video_date" => $vDAT
            ));
}
 echo insert_video($_POST['vData'], $_POST['tsData'], $_POST['dData']);
?>

【讨论】:

  • 为什么你现在有额外的action: 'insert_video' 数据?这是文档中写的内容。您还需要发布action 数据。在 PHP 端使用相同的 action 值方法。
  • Action:用于指定调用哪个函数。如果我使用 WP ajax 或普通的 AJAX 也没关系,同样的事情。我试图不使用函数而只调用页面,但我认为你不能使用 ajax 来做到这一点。
猜你喜欢
  • 1970-01-01
  • 2019-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
相关资源
最近更新 更多