2015-10-11 4 views
3

Я не знаю, почему я получаю сообщение об ошибке при вызове метода ajax. Веб-сервис работает нормально. Я разместил на своей локальной машине и проверил. Любая помощь приветствуется.Невозможно вставить значения в базу данных с помощью ajax-вызова

Web Service Code:

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); 
    } 
    }); 
} 
+0

Что именно эта ошибка говорит ?? – Rohit416

+0

Первое предупреждение говорит об ошибке. Второе предупреждение говорит undefined – Karthik

+0

проверить, какой код состояния вы получаете, то есть '404',' 400' или '500' ?! – Rohit416

ответ

0

После многих исследований я обнаружил, что код ошибки 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); } 
}); 
} 
+1

из-за той же политики происхождения браузера, которую вы не сможете вызвать на другом веб-сайте с помощью клиентских скриптов ... хотя вы должны быть в состоянии сделать это, используя код на стороне сервера, такой как C#. Чтобы получить доступ к сервису через службу сценариев, необходимо настроить для CORS. – Laxmikant

+0

Ohh .. ok .. Вот почему я не смог добраться до веб-службы, размещенной на другом веб-сайте, и я получал код 0. Спасибо за комментарий. – Karthik

Смежные вопросы