当我可以尝试将特殊字符作为数据传递时,Ajax调用失败

时间:2012-08-09 09:13:22

标签: ajax jquery jquery-mobile

这是我用来使用Ajax调用添加注释的代码。

<html>
<head>
<meta charset="utf-8" />
   <meta name="viewport" content="width=device-width, initial-scale=1"/> 
   <link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0-rc.1/jquery.mobile-    1.1.0-rc.1.min.css" />        
   <script type="text/javascript" charset="utf-8" src="js/cordova-1.5.0.js">
   </script>
   <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
   <script src="http://code.jquery.com/mobile/1.1.0-rc.1/jquery.mobile-1.1.0-rc.1.min.js"></script>
   <script src="js/global.js" type="text/javascript"></script>
</head>
<script>
    var msgId = window.localStorage.getItem("clickedId");

    processLogInData = function(){
                var comment = ($("#comment").val());
                temp =  'messageId=' + msgId +'&';
                temp += 'uniqueId=' + device.uuid + '&';
                temp += 'comments=' + comment;  
                var s= global1 +"rest/Comment/createCommentBO?"+temp;

                $.ajax({
                    url:global1 +"rest/Comment/createCommentBO?",
                    data: temp,
                    dataType: 'xml',
                    timeout: 10000,
                    async: false,
                    cache: false,
                    type: 'POST',
                    success: function(data){
                        if($(data).find("isException").text() == "false")
                        {
                            //alert('No Exceptions found');
                                                                onTrue();

                        }
                        else
                        {
                            onFalse();
                        }
                    },
                    error:function(XMLHttpRequest,textStatus, errorThrown) {
                              //  alert("Error status :"+textStatus);
                              //  alert("Error type :"+errorThrown);
                                alert("Error message :"+XMLHttpRequest.responseXML);
                                $("#messagelist").append( XMLHttpRequest.responseXML);
                                                                       } 
                     });
              }
                     function onTrue(){
                                location.replace("comments.html");
                                  }   
                    function onFalse()
                              {
                                  console.log("onFalse Method");
                                  alert("Unable to create Comment!");
                                  }
                    function cancel(){
                        location.replace("comments.html");
                    }
</script>
<body>
    <div data-role="page" data-theme="a">
         <div data-theme="a" data-role="header">
           <img src="images/logo_header.png" alt="Orange"/>
        </div>
        <div data-role="content">
           <form method="post" name="login" data-ajax="false">
           <label for="textarea"><h3><u>Add Comment</u> : </h3></label>
           <textarea cols="15" rows="15" name="textarea" id="comment"></textarea>
           </form>
           <div>
<div class="ui-block-a"><button type="submit" data-theme="d" onclick="cancel();" data-mini="true" data-icon="delete">Cancel</button></div>
<div class="ui-block-b"><button type="submit" data-theme="a" onclick="processLogInData();" data-mini="true" data-icon="check" >Submit</button></div>
     </div>
           </div>
          </div> 
</body>

当我输入特殊字符作为内容时将其传递给Ajax调用我收到一个错误:( Ajax调用可以正常运行任何特殊字符... 有没有办法在将数据传递给ajax调用之前对数据进行编码???请帮我解决这个问题......

提前致谢。

1 个答案:

答案 0 :(得分:0)

(1.)您应该将数据放入表单并序列化然后发送到服务器 (2.)第二种方法是你可以使用js内置函数encodeURIComponent()。