【问题标题】:Explode does not work in PHP ajax fileExplode 在 PHP ajax 文件中不起作用
【发布时间】:2017-05-10 16:34:41
【问题描述】:

这是我的 HTML 代码:

<div class="col-sm-6">
     <div class="form-group">
          <select id="horseDiscipline" name="horseDiscipline[]" class="form-control selectpicker" multiple>
          <?php
          foreach($possibleDiscipline as $disciplineChoice)
          {
          ?>
               <option value="<?php echo htmlspecialchars($disciplineChoice['disciplineName']) ; ?>"><?php echo htmlspecialchars($disciplineChoice['disciplineName']) ; ?></option>
         <?php
         }
         ?>
         </select>
    </div>
</div>
<!--Rest of form-->

这是我的 jquery 代码

var formData = new FormData($('#addForm')[0]);
        $('#addButton').text('Création...');

        $.ajax({
            url: 'AJAXFOLDER/ajaxAddHorse',
            type: 'post',
            data: formData,
            cache: false,
            contentType: false,
            processData: false,
            dataType: 'json',
            success: function(data) {
                alert(data);
            },
        });

这是我的 PHP 代码(ajaxAddHorse.php):

<?php

        //Récupération des disciplines du cheval

        $disciplines = "";

        $disciplinesTemp = explode(",", $_POST['horseDiscipline']);

        foreach ($disciplinesTemp as $names)
        {
            $disciplines = $disciplines + ' / ' + $names;
        }

        echo json_encode($disciplines);

这是我执行代码时得到的结果:

如果我像这样更改我的 PHP 文件:

<?php

        //Récupération des disciplines du cheval

        echo json_encode($_POST['horseDiscipline']);

这是我得到的:

那么为什么explode 功能在这里不起作用呢? “,”是我们在第二张图片中看到的单词之间的分隔符。但是,当我尝试explode函数时,应该包含这些单词的变量是空的......

感谢您的帮助。

【问题讨论】:

  • 在您的分解函数中执行 var_dump$disciplinesTemp
  • 您能告诉我们代码中var_dump($_POST['horseDiscipline']);exit; 的输出是什么吗?检查控制台的输出并粘贴到您的问题中。也可以使用console.log(data); 而不是alert(data);
  • 你应该使用console.log(var)而不是alert(var)
  • 您所拥有的似乎不是有效的json
  • 在 php 中,您使用 . 而不是 + 进行连接

标签: php jquery html ajax bootstrap-multiselect


【解决方案1】:

$disciplines = $disciplines + ' / ' + $names;

应该是 . 而不是 +。因为在 php 中字符串连接是通过使用 .而不是+。其他一切正常。

【讨论】:

  • 是的,是一个错误,抱歉。谢谢你。但即使这样,它也不起作用。
【解决方案2】:

如你所问:

代码:

    //Récupération des disciplines du cheval

    $disciplines = "";

    $disciplinesDump = var_dump($_POST['horseDiscipline']);

    echo json_encode($disciplinesDump);

控制台日志中不显示任何内容。

但是,如果我写:

<?php

        //Récupération des disciplines du cheval

        echo json_encode($_POST['horseDiscipline']);

我有:

希望对你有帮助……

编辑:

解决方案是:

foreach($_POST['horseDiscipline'] as $name){
    $disciplines = $disciplines . ' / ' . $name;
}

echo json_encode($disciplines);

确实,当一个选择标签在 HTML 中有多重选项时,名称应该是 name=name[]。所以它返回一个数组,解决方法是在php中读取这个数组。

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-18
    • 2012-11-26
    • 2015-02-21
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 2016-07-29
    • 2013-03-22
    相关资源
    最近更新 更多