【问题标题】:Unable to insert values into database using ajax call无法使用 ajax 调用将值插入数据库
【发布时间】:2015-10-11 09:44:52
【问题描述】:

我不知道为什么我在调用 ajax 方法时会出错。 Web 服务运行良好。我已经在我的本地机器上托管并检查了 .非常感谢任何帮助。

网络服务代码:

public class Contacts : System.Web.Services.WebService
{

    [WebMethod]
    public void InsertIntoContacts(string name,string email,string message)
    {

        string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["KarthikDBConnString"].ConnectionString;
        MySqlConnection connection = new MySqlConnection(connectionString);
        MySqlCommand cmd = new MySqlCommand("Insert into contacts values(@name , @email , @message)");
        cmd.Connection = connection;
        cmd.CommandType = System.Data.CommandType.Text;
        cmd.Parameters.AddWithValue("@name", name);
        cmd.Parameters.AddWithValue("@email", email);
        cmd.Parameters.AddWithValue("@message", message);
        connection.Open();
        cmd.ExecuteNonQuery();
        connection.Close();
    }
}

表单的 html 标记为:

<form role="form" id="contactForm">
<div class="form-group">
    <label for="name">Name :</label>
    <input type="text" class="form-control" placeholder="Enter your Name" id="name" />
</div>
<div class="form-group">
    <label for="email">Email :</label>
    <input type="email" class="form-control" placeholder="Enter your Email here (optional)" id="email" />
</div>
<div class="form-group">
    <label for="message">Message :</label>
    <textarea class="form-control" rows="3" placeholder="Enter your message here" id="message"></textarea>
</div>
<div class="form-group">
    <button type="button" class="btn btn-primary" id="sendMsgBtn" onclick="javascript:SendMsg()">Send Message</button>
</div>
</form>

ajax 调用是:

    function SendMsg() {
    var soapRequset = '<?xml version="1.0" encoding="utf-8"?>\
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">\
  <soap:Body>\
    <InsertIntoContacts xmlns="http://tempuri.org/">\
      <name>'+$("#name").val()+'</name>\
      <email>'+$("#email").val()+'</email>\
      <message>'+$("#message").val()+'</message>\
    </InsertIntoContacts>\
  </soap:Body>\
</soap:Envelope>';

    $.ajax({
        url: "host/contacts.asmx",
        type: "POST",
        data: soapRequset,
        contentType: "text/xml; charset=utf-8",
        dataType: "xml",
        processData: false,
        success: function (xData, status) { alert(status) },
        error: function (xData, status, req) {
              alert(xData.status);
              alert(status);
              alert(req);
    }
    });
}

【问题讨论】:

  • 这个错误到底是什么意思??
  • 第一个警报说错误。第二个警报说未定义
  • 检查你得到了什么状态码,即404400500?!
  • 我修改了错误函数。第一个警报显示 0。第二个显示错误。第三个只是空白。

标签: c# jquery ajax web-services soap


【解决方案1】:
【解决方案2】:

经过大量研究,我发现 ajax 错误代码0 表示 jQuery 无法访问 url。所以我在同一个网站上托管了网络服务。现在它的工作。修改后的ajax调用如下:

function sendMsg() {
var soapRequest = '<?xml version="1.0" encoding="utf-8"?>\
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">\
        <soap:Body>\
          <InsertIntoContacts xmlns="http://tempuri.org/">\
            <name>'+ $("#name").val() + '</name>\
            <email>' + $("#email").val() + '</email>\
            <message>' + $("#message").val() + '</message>\
         </InsertIntoContacts>\
       </soap:Body>\
   </soap:Envelope>';
$.ajax({
    url: "../WebService/contacts.asmx",
    type: "POST",
    data: soapRequest,
    contentType: "text/xml; charset=utf-8",
    dataType: "xml",
    processData: false,
    success: function (xData, status) { alert(status) },
    error: function (xData, status) { alert(status); }
});
}

【讨论】:

  • 由于浏览器的同源策略,您将无法使用客户端脚本调用其他网站...尽管您应该能够使用 C# 之类的服务器端代码来执行此操作。要通过脚本服务获取服务访问权限,需要为 CORS 进行配置。
  • 哦.. 好的.. 这就是为什么我无法访问托管在另一个网站上的 Web 服务并且我得到代码 0 的原因。感谢您的评论。
猜你喜欢
  • 1970-01-01
  • 2018-11-21
  • 2021-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-12
  • 2017-07-21
相关资源
最近更新 更多