2015-05-15 2 views
0

Я пытаюсь сохранить некоторые переменные javascript в базе данных SQL Server. Но когда я запускаю код, появляется предупреждение с сообщением «Внутренняя ошибка сервера».Сохранять значения Javascript для базы данных SQL Server

window.onload = function() 
{ codeLatLng(); SaveUserLocation(); return false } 
     /*===========================================================*/ 
     function SaveUserLocation() { 
       //Jquery ajax call to server side method 
       $.ajax({ 
        type: "POST", 
        dataType: "json", 
        contentType: "application/json; charset=utf-8", 
        //Url is the path of our web method (Page name/function name) 
        url: "FriendHomePage.aspx/SaveFriendLocation", 
        //Pass paramenters to the server side function 
        data: "{'LocationName':'" + userLocationName + "', 'UserID':'" + myUserID + "'}", 
        success: function (response) { 
         //Success or failure message e.g. Record saved or not saved successfully 
         if (response.d == true) { 
          alert("Record saved successfully"); 
         } 
         else { 
          alert("Record could't be saved"); 
         } 
        }, 
        error: function (xhr, textStatus, error) { 
         //Show error message(if occured) 
         alert("Error: " + error); 
        } 
       }); 
      } 




[WebMethod] 
public static bool SaveFriendLocation(string LocationName, int UserID) 
{ 
    bool status; 

    using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["FTSCS"].ConnectionString)) 
    { 
     string sql = "INSERT INTO tblLocation (LocationName,UserID) VALUES (@LocationName,@UserID)"; 
     using (SqlCommand cmd = new SqlCommand(sql, con)) 
     { 
      cmd.CommandType = CommandType.Text; 
      cmd.Parameters.AddWithValue("@LocationName", LocationName); 
      cmd.Parameters.AddWithValue("@UserID", UserID); 
      if (con.State == ConnectionState.Closed) 
      { 
       con.Open(); 
      } 
      Int32 retVal = cmd.ExecuteNonQuery(); 
      if (retVal > 0) 
      { 
       status = true; 
      } 
      else 
      { 
       status = false; 
      } 
      return status; 
     } 
    } 
} 
+1

Что-то пошло не так в коде C#. – garryp

+0

Не обязательно, может быть проблема с конфигурацией, с настройкой, которая никогда не позволяет выполнить выполнение кода. –

+0

Может быть миллион и один вопрос, но с такой небольшой информацией, как кто-нибудь может сказать? – garryp

ответ

0

ошибка, скорее всего, связан с тем, что вы не упускаете действительный JSON строки т.е. { 'property': 'value' }.

Рекомендуется использовать JSON.stringify (или эквивалент) при сериализации JSON

var data = { LocationName: userLocationName, UserID: myUserID }; 
... 
$.ajax({ 
    ... 
    data: JSON.stringify(data) 
}); 
+0

Я заработал. Но теперь есть еще одна проблема. Поле LocationName имеет неопределенное значение. Когда я проверил с помощью предупреждающих ящиков, чтобы проверить значение переменной userLocationName, его значение становится неопределенным после выполнения функции codeLatLng(). – programmer008

+0

@ programmer008, если вы скопировали мой код точно, это было бы неправильно, поскольку я только заметил, что у меня это было как «Location», а не «LocationName». Я обновил это. Однако тот факт, что ваши переменные не имеют значений, - это совсем другая история, так как тест пытается использовать только значения жесткого кодирования и проверяет, что приведенный здесь подход работает. – James

+0

Да, это работает. Но значение жестко закодировано. Как решить это? Переменная userLocationName является глобальной. Когда функция codeLatLng() выполняет свое значение, должна измениться и да, она изменится. Но он должен содержать последнее значение, которое ему было присвоено. Правильно? Но почему это содержит неопределенное значение? – programmer008

0

Я считаю, что в таких ситуациях вы должны включить режим отладки установить точку останова и выяснить реальную проблемы. Если вы не можете решить свою проблему real, вы можете оставить свой вопрос здесь. Ваш вопрос выглядит неоднозначным из-за возможные ошибки:

  • WebMethod не получает входные данные
  • параметров конфигурации не действуют
  • разный SQL выдает
Смежные вопросы