Linux за българи: Форуми

Програмиране => Web development => Темата е започната от: senser в Dec 21, 2010, 23:07



Титла: ajax requests и данни през POST
Публикувано от: senser в Dec 21, 2010, 23:07
Здравейте,

Фен съм и ползвател на CakePHP framework. В новия клон на рамката 1.3 обаче, има доста промени по-специално свързани с джаваскрипт, които поне засега ми се струват отвратителни, но по темата:
опитвам се да направя ajax request, като досега за целта ползвах prototype, но сега реших да опитам и jQuery. Целта е да направя елементарен селект бокс, при промяна на който да се ъпдейтва div елемент. Проблемът се явява, ако ajax-a  през метод POST И има сетната data, която се предава с call-a. Ето малко код:
кодът на селект-а:
Код
GeSHi (HTML):
  1. <select name="data[Sync][selection]" id="selection">
  2. <option value="hosting">Hosting</option>
  3. <option value="emails">Emails</option>
  4. <option value="google">Google</option>
  5. <option value="yahoo">Yahoo</option>
  6.  

и jQuery кода:
Код
GeSHi (Javascript):
  1. <script type="text/javascript">
  2. //<![CDATA[
  3. $(document).ready(function () {
  4. $("#selection").bind("change", function (event) {
  5. $.ajax({async:true, data:"blabla", dataType:"html", success:function (data, textStatus) {
  6. $("#result").html(data);}, type:"POST", url:"\/Syncs\/syncSelection"});
  7. return false;});});
  8. //]]>
  9. </script>
  10.  

При използване на метод GET няма проблем. Проблем се получава, когато методът е POST и е сетнат параметъра "data:"blabla"", ако този параметър не е сетнат, нещата сработват. Когато обаче параметъра не е празен, то изобщо нищо не стига до уеб сървъра - гледам нещата с firebug и се виждат само request headers, но не и response (това се потвърждава и от липсата на запис в access log-a на апача). Почвам да си мисля, че нещо не е ОК с веб сървъра ми вече ......... просто не знам какво друго да мисля.

Помагайте плс. ...


П.П. Проблемът си остава и, ако ползвам prototype вместо jquery, макар, че не съм го тествал на 100% докрай, така че най-верояно проблема не е в джаваскрипта.
Също така, когато ползвам POST за метод и параметъра data не е празен във firebug  се вижда и следното:
XML Parsing Error: no element found Location: moz-nullprincipal:{8d771d51-d6b8-4d19-80fe-8a7cdb9ca918} Line Number 1, Column 1:


Титла: Re: ajax requests и данни през POST
Публикувано от: VladSun в Dec 22, 2010, 00:15
Нямам представа къде ти е проблемът. При мен си работи ... Ето и моя (твоя) код:
Код
GeSHi (HTML):
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2.  <head>
  3.    <title></title>
  4.    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <script src="/scripts/jquery.js" type="text/javascript"></script>
  6. <script type="text/javascript">
  7. $(document).ready(function ()
  8. {
  9. $("#selection").bind("change", function (event)
  10. {
  11. $.ajax(
  12. {
  13. async:true,
  14. data:
  15. {
  16. id : 1
  17. },
  18. dataType:"html",
  19. success: function (data, textStatus)
  20. {
  21. $("#result").html(data);
  22. },
  23. type:"POST",
  24. url:"sel.php"
  25. });
  26. return false;
  27. });
  28. });
  29. </script>
  30. </head>
  31.  <body>
  32. <select name="data[Sync][selection]" id="selection">
  33. <option value="hosting">Hosting</option>
  34. <option value="emails">Emails</option>
  35. <option value="google">Google</option>
  36. <option value="yahoo">Yahoo</option>
  37. </select>
  38.  
  39. <div id="result"></div>
  40.  </body>
  41. </html>
  42.  


Титла: Re: ajax requests и данни през POST
Публикувано от: senser в Dec 22, 2010, 08:58
Проблемът се оказа в апача - segmentation fault-ваше при ПОСТ заявки. Това го оправих, но сега ми излезе друга "странност" - в скрипта, който слуша за заявката масивът $_POST е празен, т.е. липсват данните, които предавам с POST.

EDIT: Всъщност данните са в $_GET масива ......wtf  :o

EDIT2: Грешката е била моя - сега всичко е ОК мисля.