【问题标题】:Ajax or loading a fragment of page does not workAjax 或加载页面片段不起作用
【发布时间】:2015-05-01 00:53:54
【问题描述】:


我目前在使用 ajax 或使用 $('#id').load("page.php #id") 加载页面片段时遇到问题。 我想做的是一个图片库。
为了允许用户更新专辑名称,我创建了一个带有调用 ajax 函数的按钮的表单。这个 ajax 函数在 post 中发送数据,例如“$_POST['oldAlbumName'] = 'newAlbumName'”(或多或少)。 不幸的是,什么都没有发生。

我不知道它是来自 ajax 还是来自 span 的重新加载。 这是我的 PHP:

<?php
try
{
    $bdd = new PDO('mysql:host=localhost;dbname=bd;charset=utf8', 'root', '');
    $reponse = $bdd->query('SELECT DISTINCT album AS A from galerie');
    while($donnees = $reponse->fetch())
    {
        echo $donnees['A']."<br/>";
        if(isset($_POST[$donnees['A']."_text"]))
        {
            echo $_POST[$donnees['A']."_text"]."<br/>";
            echo $donnees['A']."_text<br/>";
            $bdd->query("UPDATE galerie SET album ='".$_POST[$donnees['A']."_text"]."' WHERE album='".$donnees['A']."_text'");
        }
    }
}

catch(Exception $e)
{
    echo "Impossible de se connecter à la BDD<br/>";
}?>

(回显只打印“胭脂”,这是正常的)

这是我的 JS:

    function renommageAjax(textID)
    {
        var splitted = textID.split("_");
        var champ = splitted[0];
        $.ajax({
          type: "POST",
          url: "Galerie.php",
          data: {
            textID: $("#"+textID).val(),
          },
          dataType: "text",
          success: function(data) {
            alert(textID);  
            $('#'+champ+'_name').html($("#"+textID).val());
            $('#updateSpan').load("Galerie.php #updateSpan");

          }
         });        
    }

(在我的情况下,警报打印“Rouge_text”,这也是正常的)

当然,我的 php 位于页面“Galerie.php”中的两个 ID 为“updateSpan”的跨度之间。

我的错误在哪里?

谢谢!

【问题讨论】:

  • 你必须比“什么都没发生”更具体一点。您提供的 ajax 语句发送 textID,而不是 oldAlbumName
  • 什么都没有发生,我的意思是我的数据库没有更新。关于“oldAlbumName”,是为了说明我想做什么。我不应该在这里尝试获取 $_POST['textID'] 而不是 $_POST['Rouge_text'] 吗?
  • 另外,我们从不进入 if(isset($_POST[$donnees['A']."_text"])) ... 我不明白为什么。
  • 如果您以 textID 的名义发送值,那么您当然应该在 PHP 中使用它。
  • 在javascript函数中,textID是按钮传来的String,textID的值为“Rouge_text”(我测试的情况下)。无论如何,我尝试了 if(isset($_POST['textID'])) 但我仍然没有进入这个条件。

标签: javascript php jquery ajax load


【解决方案1】:

感谢 Josh,我找到了解决问题的方法:

我更改了我的 JS(也更改了我的 php),所以我发送了两个值:旧的和新的。

新的 PHP 看起来像这样:

<?php

if(isset($_POST['textOld']))
{
    try
    {
        $bdd = new PDO('mysql:host=localhost;dbname=bd;charset=utf8', 'root', '');
        $reponse = $bdd->query('SELECT DISTINCT album AS A from galerie');

        while($donnees = $reponse->fetch())
        {

            if($_POST['textOld'] == $donnees['A'])
            {
                $bdd->query("UPDATE galerie SET album ='".$_POST['textNew']."' WHERE album='".$_POST['textOld']."'");
            }   

        }

        $reponse->closeCursor();
    }

    catch(Exception $e)
    {
        echo "Impossible de se connecter à la BDD<br/>";
    }
}
?>

还有新的 JS:

function renommageAjax(textID)
{
var splitted = textID.split("_");
var champ = splitted[0];
    $.ajax({
        type: "POST",
        url: "Galerie.php",
        data: {
            textOld: champ,
            textNew:  $("#"+textID).val()
        },
        dataType: "text",
        success: function(data) {   
            $('#'+champ+'_name').html($("#"+textID).val());
            $('#updateSpan').load("Galerie.php #updateSpan");

        }
    });
}

【讨论】:

    猜你喜欢
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    相关资源
    最近更新 更多