tangram吧 关注:3,153贴子:914
  • 9回复贴,共1

baidu.ajax的一个问题!!!

只看楼主收藏回复

     <script type="text/javascript" src="http://img.baidu.com/js/tangram-1.3.2.js"></script>
     <script type="">
         function send() {
             if (baidu.g("name").value.length <= 0) { alert("请输入一个名字!"); return; }
             baidu.ajax.post(
                 "AjaxServices.asmx/SayHellow",
                 "name=" + baidu.g("name").vlaue,
                 function(xhr, responseText) {
                     var e = xhr.responseXML.getElementsByTagName("string")[0].text;
                     alert(e);
                     baidu.dom.g("viewer").innerHTML = e;
                 }
             );
         }
     </script>
结果提示 “Hellow undefined!”; 原因在于,在匿名方法里面给任何变量赋值都是无效的!,不管变量是定义在什么位置。超级郁闷哦。
同样的jQuery代码却没问题。


IP属地:北京1楼2010-12-27 23:10回复
    "name=" + baidu.g("name").vlaue,
    原来是这句错了


    IP属地:北京2楼2010-12-28 00:21
    回复
      2025-05-18 21:24:24
      广告
      就当Tangram的Ajax实例吧,Asp.Net版
      <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="BaiduAjax.aspx.cs" Inherits="BaiduAjax.BaiduAjax" %>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml" >
      <head runat="server">
           <title>Baidu tangram 实验版</title>
           <script type="text/javascript" src="http://img.baidu.com/js/tangram-1.3.2.js"></script>
           <script type="text/javascript">
               function send() {
                   if (baidu.g("name").value.length <= 0) { alert("请输入一个名字!"); return; }
                   var e;   
                   baidu.ajax.post(
                       "AjaxServices.asmx/SayHellow",
                       "name=" + baidu.g("name").value,
                       function(xhr, responseText) {
                           e = xhr.responseXML.getElementsByTagName("string")[0].text;
                           baidu.dom.g("viewer").innerHTML = e;
                       }
                   );
               }
           </script>
      </head>
      <body>
           <form id="form1" runat="server">
           <div>
               <div id="viewer">
               </div>
               <input id="name" value="" type="text" /><br />
               <input id="submit" type="button" onclick="send();" value="获 取" />
           </div>
           </form>
      </body>
      </html>
      调用Web服务
           // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
           [System.Web.Script.Services.ScriptService]
               [WebMethod]
               public string SayHellow(string name)
               {
                   return string.Format("Hellow {0}", name);
               }


      IP属地:北京3楼2010-12-28 00:24
      回复
        请问知道如何从一个页面,也就是aspx中调用ajax吗?asmx的这样调用是没问题,但是aspx却不行


        IP属地:上海4楼2010-12-31 10:54
        回复
          目前使用如下代码可以调用aspx
          function baiduajax() {   baidu.ajax.request("default.aspx/ajaxtest", { headers: { "Content-Type": "application/json; charset=utf-8" }, onsuccess: callback, method: "POST" });   //baidu.ajax.post("default.aspx/ajaxtest",null, callback);   }   function callback(xhr, responseText) {   alert(responseText);   }
          但只能在firefox里面,在如IE和chrome里,responseText得到的仍然只是html而不是json,原因还不清楚


          IP属地:上海5楼2010-12-31 11:42
          回复
            找到原因了,因为在HEADERS 中的Content-Type KEY有application/x-www-form-urlencoded值的缘故
            解决办法是打开JS文件,找到application/x-www-form-urlencoded
            将 if (method == 'POST') { xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); }移除就可以了
            


            IP属地:上海6楼2010-12-31 12:16
            回复
              回复:4楼
              我是这样调用aspx页面这样调用的。
              首先清除aspx文件的所有前台html代码,然后方法里直接输出结果,也可以直接输出json格式。用地址参数来判断调用哪个方法。
                           baidu.ajax.request("/AjaxMethod.aspx?type=chkmail",{
                               method: 'POST',
                               data: 'email=' + email.value,
                               async: false,
                               onsuccess: function(xhr, responseText) {
                                   switch (responseText) {
                                       case "0":
                                           msg.innerHTML = "抱歉,此邮箱已经被其它账号使用,请使用其它邮箱注册"
                                           break;
                                       case "1":
                                           msg.innerHTML = "";
                                           break;
                                       default:
                                           msg.innerHTML = "抱歉,Ajax请求失败";
                                           break;
                                   }
                               }
                           });
              看到有人说给方法加WebMethod属性可以像web服务那样调用,但我没试过。
              不过有一点,第3楼的例子,本地测试可以,传到服务器上是有问题的。具体什么原因,我查过,但还是不太明白,反正说只允许本地调用。


              IP属地:北京7楼2011-01-01 23:07
              回复
                3楼使用的方法是创建一般处理程序ashx


                IP属地:陕西8楼2011-01-06 17:56
                回复
                  2025-05-18 21:18:24
                  广告
                  本帖都是自己提问,自己回答的。嗯,提倡!


                  9楼2011-06-08 13:02
                  回复
                    鼓励这样的积极用户!!


                    10楼2011-06-08 13:02
                    回复