Как я могу получить доступ на запись к внешним объектам из метода обратного вызова jQuery AJAX? - PullRequest
0 голосов
/ 14 сентября 2009

Ваша помощь будет принята с благодарностью. Я не понимаю, почему следующий код jQuery не работает:

function saveChanges(obj, n, id) {

  var t = "content to send to server";

  $.post("http://localhost:8080/Content.do?method=update",{
    value: t,
    key: id
  },function(result){
    alert(result); //WORKS
    alert("INNER"+$(obj).parent().parent().html());//WORKS
    $(obj).parent().parent().after('<div>dddddd</div>').remove();//FAILS ALL
    alert(id); //FAILS
    alert("stop"); //FAILS
  });

}

Мой вывод на данный момент таков: внутри этого метода обратного вызова function(result) У меня есть доступ READ к внешнему объекту (здесь $(obj)), но у меня нет доступа WRITE. Как только я выполняю запись, функция перестает работать с этой точки до остальной части функции.

Правильно ли сделан этот вывод? Если кто-то знает о хорошем учебнике, который объясняет эту концепцию, я был бы очень благодарен. (Доступ к объектам с помощью jQuery и их областей ...)

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 14 сентября 2009

Там что-то еще не так. В изолированном тестовом случае я не смог продублировать вашу ошибку

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
<script type="text/javascript">

//alert = console.log;

$(function(){

  function saveChanges(obj, n, id) {

    var t = "content to send to server";

    $.post("test.php",{
      value: t,
      key: id
    },function(result){
      alert(result); //WORKS
      alert("INNER"+$(obj).parent().parent().html());
      $(obj).parent().parent().after('<div>dddddd</div>').remove();
      alert(id);
      alert("stop");
    });

  }

  saveChanges( '#test', 1, 'test' );

});


</script>

</head>
<body>

<div>
    <div>
        <div id="test">
          just a test
        </div>
    </div>
</div>

</body>
</html>

И мой test.php

<?php

echo json_encode( $_POST );

?>

Я получаю четыре оповещения

{"value":"content to send to server","key":"test"}

INNER
    <div>
        <div id="test">
          just a test
        </div>
    </div>

test

stop
0 голосов
/ 14 сентября 2009

Это, конечно, не имеет ничего общего с чтением или записью «в» переменную. Что-то еще должно быть не так в первой строке, которую вы пометили как «FAIL». Вы должны проверить это, включив Firebug в Firefox (если у вас не установлен Firebug, удалите все и сделайте это сейчас) и снова запустите скрипт.

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