【问题标题】:Ajax datapost doesnt get trough to posted urlAjax 数据帖子无法通过发布的 url
【发布时间】:2018-02-03 09:36:12
【问题描述】:

我正在尝试将数据发布到仅包含 php 代码的 php 站点,当在第一页上单击 ID #mR-RateableFramePicture 时应执行该代码。这是通过 ajax 请求完成的:

    $('#mR-RateableFramePicture').dblclick(function() {
        $.ajax({
            type: "POST",
            url: 'moduleRateable/scriptSavedStyle.php',
            data: { rateableUserID: rateableUserID, rateablePictureID: rateablePictureID},
            success: function() {
                $('#DynamicContent').load('moduleRateable/scriptSavedStyle.php');
            }
        });
    });

    var rateableUserID = $('input[name="rateableUserID"]').val();
    var rateablePictureID = $('input[name="rateablePictureID"]').val();

这里是 ajax 发布到的 url 目的地:

<?php
// Start the session (enable global $_SESSION variable).
session_start();

// Include database-link ($conn).
include '../../scriptMysqli.php';

// Make global variable to simple variable.
$userID = $_SESSION["ID"];

//Save the rateable style to one owns libary of saved styles.    
$ratedUserID = $_POST['rateableUserID'];
$ratedPictureID = $_POST['rateablePictureID'];


$sql = $conn->query("UPDATE styles WHERE userID = '$ratedUserID;' AND 
pictureID = '$ratedPictureID' SET savedByUser = '$userID'");

?>

我收到以下错误消息:

注意:未定义索引:第 12 行 C:\xampp\htdocs\mystyle\app\moduleRateable\scriptSavedStyle.php 中的 rateableUserID

注意:未定义索引:第 13 行 C:\xampp\htdocs\mystyle\app\moduleRateable\scriptSavedStyle.php 中的 rateablePictureID

【问题讨论】:

  • 您是否尝试过同时检查客户端(发送的请求标头)和服务器端($_POST 全局)?
  • 我试图在第一页的 ajax 请求中显示带有警报的变量 rateableUserID,这导致正确的值位于 javascript 变量中,但正如错误所示,是否没有 $_POST 变量定义:/
  • 试试data: { "rateableUserID": rateableUserID, "rateablePictureID": rateablePictureID}
  • @Niladri 已在使用中,但也不起作用:/ 似乎没有数据进入低谷。

标签: javascript php jquery ajax post


【解决方案1】:

您没有在 $.ajax({}) 调用中传递变量 rateableUserID 和 rateablePictureID 的值,如下所示 -

data: { rateableUserID: rateableUserID, rateablePictureID: rateablePictureID}。除非它们是全局定义的,否则您将在 PHP 端获得未定义的值。请确保在调用之前已将值分配给 rateableUserID 和 rateablePictureID。但是,您仍然必须检查您是否实际上在您的发布请求中传递了该变量,因为 PHP 找不到键名。

函数应该如下所示

$('#mR-RateableFramePicture').dblclick(function() {
     var rateableUserID = $('input[name="rateableUserID"]').val();
     var rateablePictureID = $('input[name="rateablePictureID"]').val();

        $.ajax({
            type: "POST",
            url: 'moduleRateable/scriptSavedStyle.php',
            data: { "rateableUserID": rateableUserID, "rateablePictureID": rateablePictureID},
            success: function() {
                $('#DynamicContent').load('moduleRateable/scriptSavedStyle.php');
            }
        });
    });

【讨论】:

  • 对不起,我忘了添加我的 javascript 变量,它现在更新了:O
  • 即使未定义,key 应该仍然存在并且不会抛出index undefined 错误。因为PHP基本上接收对象为{reteableUserID: undefined, rateablePictureID: undefined}
  • 我尝试将 javascript var 放入函数中,但这似乎也无济于事:/
  • @Johannes 在函数内部调试时通过在控制台$('input[name="rateableUserID"]').val(); 中运行以下命令来检查你得到了什么值。顺便说一句,你使用的是双击来触发函数而不是单击。我不知道是否那是你的要求。
  • 发布时 $('input[name="rateableUserID"]').val();在 chroms 控制台中,它返回正确的值,并且单击交换的双精度破坏了变量:(@Niladri
猜你喜欢
  • 2011-02-26
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
  • 2023-04-02
  • 2012-04-30
  • 1970-01-01
  • 1970-01-01
  • 2013-10-17
相关资源
最近更新 更多