【问题标题】:Ajax response throws an Syntax Error: Json @ position 4Ajax 响应引发语法错误:Json @ position 4
【发布时间】:2016-12-29 12:55:29
【问题描述】:

在我的 Yii2 应用程序中,我尝试将引导多选下拉值发送到我的控制器,并根据发送的 arra 在控制器中执行操作。它总是遇到错误,我已经警告了 throwedError。我得到错误 语法错误:Json 中第 4 位的意外标记

我不明白我哪里出错了。

我的下拉列表代码

 <select id="lstFruit" multiple="multiple" style="width:300px;">
    <optgroup label ="General">
   <?php for ($i = 0; $i<$genCount; $i++){?>

              <option value="<?php echo $genRole[$i] ?>">
                  <?php echo $genRole[$i] ?>
              </option>
          <?php } ?>  
   </optgroup>

   <optgroup label ="Chemicals">
   <?php for ($i = 0; $i<$chemCount; $i++){?>

              <option value="<?php echo $chemRole[$i] ?>">
                  <?php echo $chemRole[$i] ?>
              </option>
          <?php } ?>  
   </optgroup>

    <optgroup label ="Risk Assessment">
   <?php for ($i = 0; $i<$riskCount; $i++){?>

              <option value="<?php echo $riskRole[$i] ?>">
                  <?php echo $riskRole[$i] ?>
              </option>
          <?php } ?>  
   </optgroup>

</select>

我的 ajax 请求

 jQuery("body").on("click", ".rolesEdit", function() {

        var roles = $("#lstFruit").val();
        alert(roles.length);

        $.ajax({
        type: "POST",
        cache: false,
        data:{roles: roles},
        url: "'.$url.'",
        dataType: "json",
        success: function(data){ 
            if(data.status){
               alert(data);
            }else{
               alert(data);
            }
        },
        error: function (xhr, ajaxOptions, thrownError) {
        alert(thrownError);
                   if(thrownError == "Forbidden"){window.location = "http://test.qsims.com/index.php/product/check-file"; }
        }
    });
});

我的控制器

  if(Yii::$app->request->post('roles')){
           $p = Yii::$app->request->post();
           $roles = $p["roles"];
           $count = count($roles);

           \app\modules\auth\models\SimAuthAssignment::deleteAll(['in','user_id', $id]);

            for($i = 0; $i < $count; $i++){
                $auth = Yii::$app->authManager;         
                $authorRole = $auth->getRole($roles[$i]);
                $auth->assign($authorRole, $model->user_id);
            }
             echo BaseJson::encode([
                'status'=>true,
                'id'=>$model->user_id,                
            ]);

        }             

我哪里出错了?谁能帮我解决这个问题?

【问题讨论】:

  • 你能打印和发布 JSON 字符串吗?错误似乎在 JSON 字符串中。
  • 如错误所述,问题出在 JSON 中。您的 AJAX 请求的响应是什么?
  • 我无法转储帖子,因为我正在发送 ajax 请求
  • @MohanPrasad 你可以。如果您转储它,它将在 AJAX 响应中返回。打开你的控制台终端并查看它。
  • 在您获得 #lstFruit 值后,我还会执行 console.log(roles) 以查看您的数据是如何发送到您的控制器的。

标签: php json ajax yii2 response


【解决方案1】:

由于我的网址导致语法错误。我的网址包含回调?=

$url=Yii::$app->getUrlManager()->createUrl("user/update?id=".$id);

这是一个激活 JSONP 功能的魔法字符串。

我在控制器中创建了一个新操作,并将 url 更改为新创建的操作,这为我解决了问题。

  $url=Yii::$app->getUrlManager()->createUrl("user/roles-ajax");

答案来自enter link description here - @Abdul

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多