2009-12-17 53 views
0

我使用jQuery由.NET 2.0中的应用。jQuery和.NET 2.0

但是,当我将它部署在没有安装.NET 3.5的服务器上时,它不起作用。

我没有得到任何错误,不知道如何调试它。

使用jQuery-1.3.2.min.js。

完美的作品在我的测试环境,并与3.5安装在我的另一台服务器上。

一旦它被上传到生产服务器与2.0 ASP.NET逢回调失败。

<script type="text/javascript"> 
    $(document).ready(function() { 
     var item = $("[id$='txtItemName']"); 
     var category = $("[id$='ddlCategories']"); 
     var record = $("[id$='txtRecordID']"); 

     $("#btnSave").click(function() { 


      if (item.val().length == 0) { 
       alert("Please enter item name first."); 
       return false; 
      } 

      if (category.val().length == 0) { 
       alert("Please select a category."); 
       return false; 
      } 

      var paramArray = ["testText", escape(item.val()), "categoryID", category.val(), "recordID", 1]; 
      PageMethod("SaveMyData", paramArray, AjaxSucceeded, AjaxFailed); 

     }); 
    }); 

    function AjaxSucceeded (result) 
    {  
     alert("lykkedes" + result); 
    } 
    function AjaxFailed(result) 
    { 
     alert("failed" + result); 

    } 

    function PageMethod(fn, paramArray, successFn, errorFn) { 
     var pagePath = window.location.pathname; 
     //Create list of parameters in the form: 
     //{"paramName1":"paramValue1","paramName2":"paramValue2"} 
     var paramList = ''; 
     if (paramArray.length > 0) { 
      for (var i = 0; i < paramArray.length; i += 2) { 
       if (paramList.length > 0) paramList += ','; 
       paramList += '"' + paramArray[i] + '":"' + paramArray[i + 1] + '"'; 
      } 
     } 
     paramList = '{' + paramList + '}'; 
     //Call the page method 
     $.ajax({ 
      type: "POST", 
      url: "DataProcessor.aspx?" + fn + "=1", 
      contentType: "application/json; charset=utf-8", 
      data: paramList, 
      dataType: "json", 
      success: successFn, 
      error: errorFn 
     }) 
    ;} 
</script> 

而且数据处理器的程序是这样的:

public void SaveMyData() 
{ 
    System.IO.StreamReader sr = new System.IO.StreamReader(Request.InputStream); 
    string line = ""; 
    line = sr.ReadToEnd(); 
    JObject jo = JObject.Parse(line); 
    string temp = (string)jo["recordID"]; 
    Response.Write(temp); 
} 

我进入AjaxFailed(结果)当我尝试它....

任何帮助和建议大大appriciated ..

+1

你能提供你得到的错误? – marcgg 2009-12-17 12:06:12

+0

我想,但不知道如何得到一些ErrorCode的..结果是在返回空.. – 2009-12-17 12:50:23

回答

0

问题可能是JSON序列化程序,您的服务器是否安装了ASP.Net 2.0 AJAX扩展程序?

+0

我已经要求我的主机,如果它的安装..有无论如何解决这个,如果它不是? – 2009-12-17 12:30:26

+0

ASP.Net AJAX 2.0的扩展安装在我的服务器上,所以它不能是.. – 2009-12-17 12:49:41

0

如果你不能调试,因为它在生产环境中,那么你能插入诊断吗?

你击中AjaxFailed功能,或不呢?

第一个建议是按代码间隔编写简单的alert()语句,以查看是否可以跟踪正在发生的事情。你可能想看看httpresult状态和正在从调用返回的responseText的httpresult。

在服务器端,您可以写出特定阶段的某些日志文件值,即JSON字符串。

也将回声上面相对于串行器。尝试使用

using System.Web.Script.Serialization; 

JavaScriptSerializer jss = new JavaScriptSerializer(); 

MyCustomClass mcc = jss.Deserialize<MyCustomClass>(someJSONstring); 

string someOtherJSONString = jss.Serialize(mcc); 
1

我不是骄傲地在这里回答我的问题,因为它是忠实地一个小白错误,我做...

的JSON DLL我所用的是不是一个与.NET 2.0支持。我以某种方式忽略了这个事实,它在我的测试环境中安装了3.5。

我下载了最新版本的JSON.net dll,并使用了2.0 DLL,一切都像魅力一样。

感谢在这里的贡献。