Ошибка при сохранении значения текстового поля javascript в БД с использованием ajax-кода в MVC2 - PullRequest
0 голосов
/ 22 июля 2011

Я могу упустить что-то очевидное здесь, но как мне переписать этот код!

Я пытаюсь сохранить значение, введенное в текстовом поле (текстовое поле было показано на странице диалога javascript). На странице диалога javascript у меня есть одна кнопка «ОК». Когда я нажимаю кнопку, я хочу сохранить значение введите в текстовое поле. Я хочу сохранить содержимое с помощью Ajax.

Пожалуйста, смотрите мой пример кода Просмотр страницы:

<script language="javascript" type="text/javascript">
    $(function () {
        $('.button').live('click', function () {
            $('.Text_dialog').dialog('open');
        });

        $('.Text_dialog').dialog({
            autoOpen: false,
            buttons: {
                'Ok': function () {
                    var textValue = $(':txtValue').val();
                    $.ajax({
                        url: '/Home/About',
                        type: 'POST',
                        data: { str: textValue },
                        success: function (result) {
                            alert(result.val);
                        }
                    });
                },
            }
        });
    });

</script>


     <input type="button" value="Add Value" class="button" />
     <div class="Text_dialog" title="Basic modal dialog">
          TextValue: <input type="text" class="txtValue" />
</div>

Страница управления:

[HttpPost]
    public ActionResult About(string str)
    {
        ValidateClass ObjAM = new ValidateClass();
        int value = ObjAM.ValidatetextValue(str);
        return Json(new { val = value });
    }

Страница модели:

 public class ValidateClass
    {
        DataClasses1DataContext dbObj = new DataClasses1DataContext();
        public int ValidatetextValue(string str)
        {
            string value = (from SearchtextValue in dbObj.Options
                                where SearchtextValue.OptionName == str
                                select SearchtextValue.OptionName).Single();
            if (value == null)
            {
                return 1;
            }
            return 0;

        }
    }

Когда я запускаю этот код, я получаю сообщение об ошибке сценария типа «Объект не поддерживает это свойство или метод». Пожалуйста, советуйте

Ответы [ 2 ]

0 голосов
/ 22 июля 2011

вы можете попробовать изменить

<input type="text" class="txtValue" />

до

<input type="text" class="txtValue" id="txtValue" />

и

var textValue = $(':txtValue').val();

до

var textValue = $('#txtValue').val();

Я никогда не использовал : селектор ... но я думаю, что он вернет вам коллекцию, и вы должны использовать индекс [0] или, почему бы вам не использовать селектор класса .?

Редактировать: как я см. , вы не можете использовать : в этом случае

также вы можете добавить dataType: "json" в ваш запрос Ajax и изменить тип возвращаемого вами метода с

public ActionResult About(string str)

до

public JsonResult About(string str)

РЕДАКТИРОВАТЬ 2:

Вы включили библиотеку, где находится функция dialog ()? после включения библиотеки jquery?

0 голосов
/ 22 июля 2011

Изменить data: { str: textValue } на data: "{ 'str' :'" + textValue +"' }"

Если вы не понимаете, как правильно выйти из кавычек, попробуйте это.

$(function() {
    $('.button').live('click', function() {
        $('.Text_dialog').dialog('open');
    });

    $('.Text_dialog').dialog({
        autoOpen: false,
        buttons: {
            'Ok': function() {
                var DTO = "{ 'str' :'" + $('.txtValue').val() +"' }";
                $.ajax({
                    url: '/Home/About',
                    type: 'POST',
                    data: DTO,
                    success: function(result) {
                        alert(result.val);
                    }
                });
            },
        }
    });
});

Обратите внимание, что я изменил :txtValue на .txtValue, так как это правильный выбор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...