【问题标题】:jquery ajax method not triggering on remote serverjquery ajax方法不在远程服务器上触发
【发布时间】:2016-02-24 12:03:24
【问题描述】:

首先,我所有关于php、mysql和js的工作都在本地服务器上。我第一次把我的工作放到网上。但是我这样做时遇到了一些问题。

我的网页上有一个回答后部分,我使用 jquery ajax 提交包含用户回答的表单。此功能在我的本地计算机上运行良好,但是当 我尝试在线提交时我的域是 ezphp.tk ,我收到以下错误:

语法错误:JSON.parse:第 1 行第 1 列的意外字符 JSON 数据

...tion(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(...

我的 ajax 方法如下:

$.ajax('../includes/verifycomment.php',{
    data   :{
        'comment_body'     :$(this).val(),
        'userpost_post_id' : <?php echo $postid;?>,
        'users_user_id'    : <?php echo $userdata->user_id; ?>,
        'answers_answer_id':$(this).data('id')
    },
    datatype:'json',
    method  :'POST',
    success :function(response){
    var obj=$.parseJSON(response);

       if(obj['text']){
          alert(obj['text']);
          $(textarea[i]).val('');
          $(textarea[i]).hide();
          $(comment[i]).show();
          return false;

       }else{
          $(textarea[i]).val('');
          $(textarea[i]).hide();
          var obj=$.parseJSON(response);

          var str="<div class='stylecomment' >"+obj[0]['comment_body']+" --- <span style='color:#d3d3d3;font-size:13px;'>   commented by </span><a href='../includes/profile.php?user=<?php echo escape($userdata->username);?>'><?php echo escape($userdata->username);?></a> </div></div>";
          $(cmntholder[i]).append(str);
          $(comment[i]).show();
        }
    }


});

我的回应:

【问题讨论】:

  • 请发布您的response
  • 您可能在 php 中有错误,请向我们展示您从服务器获得的响应。
  • 你的意思是 var obj=$.parseJSON(response); obj 变量的值?
  • 否,来自服务器的响应,响应变量的内容。添加console.log(response)或在开发者工具的network选项卡中查看response。
  • console.log 会在 php 页面上工作吗?

标签: javascript php jquery json ajax


【解决方案1】:

你不需要这个:

 var obj=$.parseJSON(response);

因为你已经有了dataType:"json",所以你不需要再次解析它。

【讨论】:

  • 但是在本地电脑上工作...为什么会在远程服务器上产生问题?
【解决方案2】:

$(this) 是指ajax,用值在ajax函数外创建变量,将数据类型更正为dataType删除oject的解析并返回,使用preventDefault停止默认点击动作,将url属性附加到ajax对象

试试:

 var cbody = $(this).val(),answ = $(this).data('id');

     $.ajax({url:'../includes/verifycomment.php',
                data :{
                    'comment_body'     :cbody,
                    'userpost_post_id' : '<?php echo $postid;?>',
                    'users_user_id'    : '<?php echo $userdata->user_id; ?>',
                    'answers_answer_id':answ
                },
                dataType:'json',
                method  :'POST',
                success :function(response){
                var obj=response;

                   if(obj['text']){
                      alert(obj['text']);
                      $(textarea[i]).val('');
                      $(textarea[i]).hide();
                      $(comment[i]).show();

                   }else{
                      $(textarea[i]).val('');
                      $(textarea[i]).hide();
                      var obj=response;

                      var str="<div class='stylecomment' >"+obj[0]['comment_body']+" --- <span style='color:#d3d3d3;font-size:13px;'>   commented by </span><a href='../includes/profile.php?user=<?php echo escape($userdata->username);?>'><?php echo escape($userdata->username);?></a> </div></div>";
                      $(cmntholder[i]).append(str);
                      $(comment[i]).show();
                    }
                }


            });

【讨论】:

    【解决方案3】:

    将您的 "datatype:'json'," 替换为 "dataType:'json'," 示例

                 $.ajax('../includes/verifycomment.php',{
                    data   :{
                        'comment_body'     :$(this).val(),
                        'userpost_post_id' : <?php echo $postid;?>,
                        'users_user_id'    : <?php echo $userdata->user_id; ?>,
                        'answers_answer_id':$(this).data('id')
                    },
                    dataType:'json',
                    method  :'POST',
                    success :function(response){
                    if(response.text){
                         //handle success
                    }else{
                         //handle error
                    }
    
                });
    

    更新:

     $.ajax('../includes/verifycomment.php',{
                        data   :{
                            'comment_body'     :$(this).val(),
                            'userpost_post_id' : <?php echo $postid;?>,
                            'users_user_id'    : <?php echo $userdata->user_id; ?>,
                            'answers_answer_id':$(this).data('id')
                        },
                        dataType:'json',
                        method  :'POST',
                        success :function(response){
                        if(response!=""){
                           var _array=JSON.parse(response);
                         alert("Answer id is "+_array[0].answer_id);
    
                         }else{
                             //handle error
                        alert("Response is empty");
                        }
    
                    });
    

    更多详情请咨询http://api.jquery.com/jquery.ajax/

    【讨论】:

    • 什么“数据类型:'json'。” .. 我在我的代码中没有发现与该行类似的东西
    • "t" in your datatype is small case and mine dataType "T" is capital case.
    • 我已经改变了。但还是一样。我提醒响应表单服务器。在本地主机上它打印的响应类似于我添加到我的帖子中的图像。但在远程服务器上它打印 [object object ]
    • 不幸的是,我在删除我的评论时删除了您的评论..:(..with大写“T”本地和远程服务器都打印[object object]。我现在应该做什么?为什么它不是json?因为我将 dataType 设置为 json
    • 你将 $.parseJSON 更改为 JSON.parse.. 我猜这两个是相似的??我得到了同样的错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    相关资源
    最近更新 更多