Phonegap Ajax调用返回内部服务器错误

Phonegap Ajax调用返回内部服务器错误

问题描述:

我是Phonegap Android应用程序开发的新手。我试图将我的应用程序与远程MS SQL Server数据库连接起来,我写了一个ASP.Net Web服务来连接这两个。 但是当我通过JQuery ajax()方法调用这个Web服务时,它返回“Internal Server Error”。Phonegap Ajax调用返回内部服务器错误

代码:

<html> 
<head> 
    <title>PhoneGap Example</title> 
    <script type="text/javascript" charset="utf-8" src="js/cordova.js"></script> 
    <link rel="stylesheet" href="css/jquery.mobile.css" /> 
    <script type="text/javascript" src="js/jquery.js"></script> 
    <script type="text/javascript" src="js/jquery.mobile.js"></script> 
    <script type="text/javascript" > 
     function button_clicked(){ 
      var name = $.trim($("#txtName").val()); 
      var contact = $.trim($("#txtContactNumber").val()); 
      var type = $.trim($("#txtType").val()); 

      if(name.length > 0) 
      { 
       $.ajax({ 
        type: "POST", 
        url: "http://my-domain.com/DocNote_WebService/DoctorMaster.asmx/insertDoctor", 
        data: "{doctorName: "+ name + ",contactNumber: "+ contact + ",doctorType: " + type +"}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success : function(data) {    
         alert('Record Saved Sucessfully.....!!!!'); 
        }, 
        error: function(xhr, ajaxOptions, thrownError) { 
         alert('ERROR: '+thrownError); 
        } 
       }); 
      } 
     } 
    </script> 
</head> 
<body> 
    <section id="page1"> 
     <header><h1>DocNote</h1></header> 
     <div class="content" data-role="content"> 
      <h3>Enter Doctor Info</h3> 

       <div data-role="fieldcontain"> 
        <input type="text" data-clear-btn="true" name="txtName" id="txtName" placeholder="Enter Name"/> 
        <br/> 
        <input type="text" data-clear-btn="true" name="txtContactNumber" id="txtContactNumber" placeholder="Contact Number"/> 
        <br/> 
        <input type="text" data-clear-btn="true" name="txtType" id="txtType" placeholder="Type"/> 
        <br/> 
        <button id="btnSubmit" class="ui-btn ui-btn-inline ui-corner-all" onclick="button_clicked()">Submit</button> 
        <button id="btnCancel" class="ui-btn ui-btn-inline ui-corner-all">Cancel</button> 
       </div> 

     </div> 
    </section> 
</body> 
</html> 

我的Web服务方法:

[WebMethod] 
    public void insertDoctor(String doctorName, String contactNumber, int doctorType) { 
     using (SqlConnection connection = ConnectionFactory.getConnection()) 
     { 
      SqlCommand sqlCommand = new SqlCommand("Insert into DOCTOR_MASTER (DOCTOR_NAME, DOCTOR_CONTACT_NUMBER,DOCTOR_TYPE) values (@name,@contact,@type)",connection); 
      sqlCommand.Parameters.AddWithValue("@name", doctorName); 
      sqlCommand.Parameters.AddWithValue("@contact",contactNumber); 
      sqlCommand.Parameters.AddWithValue("@type", doctorType); 

      sqlCommand.ExecuteNonQuery(); 
     } 
    } 

告诉我我提前做错了..... 感谢...... ...

+1

您是否尝试过调试服务器上的代码以查看导致错误的原因?没有这个,“内部服务器错误”根本没有任何帮助。 – Archer 2014-10-20 14:30:31

+0

尝试使用request.form [“keyword”]在服务器端获取发布的数据并以这种方式发布数据: data:{name:name,contact:contact,type:type} – Emre 2014-10-21 07:45:51

+0

@Archer:我测试了我的Web服务使用[测试工具](https://wizdl.codeplex.com/),并且工作正常。 – 2014-10-21 21:11:10

最后,我发现解决方案Here

data: "{ firstName: 'Aidy', lastName: 'F' }" 

然后,我修改了我的代码并工作。

$.ajax({ 
     type: "POST", 
     url: "http://my-domain.com/DocNote_WebService/DoctorMaster.asmx/insertDoctor", 
     data: "{doctorName:'" + doctorName + "', contactNumber:'" + contactNumber + "', doctorType:'" + doctorType + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success : function(response) {    
      alert('Record Saved Sucessfully.....!!!!');      
     }, 
     error: function(xhr, ajaxOptions, thrownError) { 
      alert('ERROR: '+thrownError); 
     } 
}); 

将数据作为对象传递,而不是字符串...

$.ajax({ 
    type: "POST", 
    url: "http://my-domain.com/DocNote_WebService/DoctorMaster.asmx/insertDoctor", 
    data: { 
     "doctorName": name, 
     "contactNumber": contact, 
     "doctorType": type 
    }, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success : function(data) {    
     alert('Record Saved Sucessfully.....!!!!'); 
    }, 
    error: function(xhr, ajaxOptions, thrownError) { 
     alert('ERROR: '+thrownError); 
    } 
});