ошибка отсутствует;оператор before в jquery при отправке сериализованного xml через jquery - PullRequest
1 голос
/ 25 ноября 2010

Я получаю эту ошибку в строке var data =<?php echo serialize($msg);?>; кода ниже.Консоль также выдает ошибку данных не определено.Я помещаю кавычки вокруг данных, затем эта ошибка исчезает, но первая ошибка остается.

РЕДАКТИРОВАНИЕ

//Raw xml
    $result = curl_exec($ch);
    curl_close($ch);
    $xml = simplexml_load_string($result);
     return $xml;
    } 
?>    
   <head>
   <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js">
   </script>
   </head>
   <body>
   <script type="text/javascript"> <?php $msg = searchResults('windows');?>;
   var data ="<?php echo serialize($msg);?>";
   </script>
   <script type="text/javascript">
     $(document).ready(function() 
    {
       $.ajax({
       url: "script.php",
       type: "POST",
       data: data,
       success: function(){
       alert("success");
       }
      });
      return false;
     });
    </script>
    </body>
    </html>

Я пытался увидеть, но не мог понять никаких проблем

Это script.php

<?php
var_dump($_POST);
?>

это xml из твиттера

var data =O:16:"SimpleXMLElement":5:{s:2:"id";s:43:"tag:search.twitter.com,2005:search/#DIYSe_D";s:4:"link";a:4:{i:0;O:16:"SimpleXMLElement":1:{s:11:"@attributes";a:3:{s:4:"type";s:9:"text/html";s:4:"href";s:45:"http://search.twitter.com/search?q=%23DIYSe_D";s:3:"rel";s:9:"alternate";}}i:1;O:16:"SimpleXMLElement":1:{s:11:"@attributes";a:3:{s:4:"type";s:20:"application/atom+xml";s:4:"href";s:58:"http://search.twitter.com/search.atom?q=%23DIYSe_D&rpp=100";s:3:"rel";s:4:"self";}}i:2;O:16:"SimpleXMLElement":1:{s:11:"@attributes";a:3:{s:4:"type";s:37:"application/opensearchdescription+xml";s:4:"href";s:40:"http://search.twitter.com/opensearch.xml";s:3:"rel";s:6:"search";}}i:3;O:16:"SimpleXMLElement":1:{s:11:"@attributes";a:3:{s:4:"type";s:20:"application/atom+xml";s:4:"href";s:84:"http://search.twitter.com/search.atom?q=%23DIYSe_D&rpp=100&since_id=7856019371724800";s:3:"rel";s:7:"refresh";}}}s:5:"title";s:25:"#DIYSe_D - Twitter Search";s:7:"updated";s:20:"2010-11-24T21:53:28Z";s:5:"entry";a:3:{i:0;O:16:"SimpleXMLElement":7:{s:2:"id";s:44:"tag:search.twitter.com,2005:7552404006371328";s:9:"published";s:20:"2010-11-24T21:53:28Z";s:4:"link";a:2:{i:0;O:16:"SimpleXMLElement":1:{s:11:"@attributes";a:3:{s:4:"type";s:9:"text/html";s:4:"href";s:50:"http://twitter.com/_smir/statuses/7552404006371328";s:3:"rel";s:9:"alternate";}}i:1;O:16:"SimpleXMLElement":1:{s:11:"@attributes";a:3:{s:4:"type";s:9:"image/png";s:4:"href";s:67:"http://s.twimg.com/a/1289849896/images/default_profile_5_normal.png";s:3:"rel";s:5:"image";}}}s:5:"title";s:59:"#DIYse_D DELIVERAB: twitter messages 2_inc 1, 19th OCT 2010";s:7:"content";s:248:"<a href="http://search.twitter.com/search?q=%23DIYse_D" 
onclick="pageTracker._setCustomVar(2, 'result_type', 'recent', 3);pageTracker._trackPageview('/intra/hashtag/#DIYse_D');"><b>#DIYse_D</b></a> DELIVERAB: twitter messages 2_inc 1, 19th OCT 2010";s:7:"updated";s:20:"2010-11-24T21:53:28Z";s:6:"author";O:16:"SimpleXMLElement":2:{s:4:"name";s:13:"_smir (Smeer)";s:3:"uri";s:24:"http://twitter.com/_smir";}}i:1;O:16:"SimpleXMLElement":7:{s:2:"id";s:44:"tag:search.twitter.com,2005:7551711354822656";s:9:"published";s:20:"2010-11-24T21:50:42Z";s:4:"link";a:2:{i:0;O:16:"SimpleXMLElement":1:{s:11:"@attributes";a:3:{s:4:"type";s:9:"text/html";s:4:"href";s:58:"http://twitter.com/Babar_Shahzad/statuses/7551711354822656";s:3:"rel";s:9:"alternate";}}i:1;O:16:"SimpleXMLElement":1:{s:11:"@attributes";a:3:{s:4:"type";s:9:"image/png";s:4:"href";s:103:"http://a1.twimg.com/profile_images/1090185625/29465_391454998679_533808679_3864564_6071800_n_normal.jpg";s:3:"rel";s:5:"image";}}}s:5:"title";s:58:"#DIYse_D DELIVERAB: twitter messages 2_inc2, 24th OCT 2010";s:7:"content";s:247:"<a href="http://search.twitter.com/search?q=%23DIYse_D" onclick="pageTracker._setCustomVar(2, 'result_type', 'recent', 3);pageTracker._trackPageview('/intra/hashtag/#DIYse_D');"><b>#DIYse_D</b></a> DELIVERAB: twitter messages 2_inc2, 24th OCT 
2010";s:7:"updated";s:20:"2010-11-24T21:50:42Z";s:6:"author";O:16:"SimpleXMLElement":2:{s:4:"name";s:32:"Babar_Shahzad (Babar Shahzad Ch)";s:3:"uri";s:32:"http://twitter.com/Babar_Shahzad";}}i:2;O:16:"SimpleXMLElement":7:{s:2:"id";s:44:"tag:search.twitter.com,2005:7550668919283712";s:9:"published";s:20:"2010-11-24T21:46:34Z";s:4:"link";a:2:{i:0;O:16:"SimpleXMLElement":1:{s:11:"@attributes";a:3:{s:4:"type";s:9:"text/html";s:4:"href";s:58:"http://twitter.com/Babar_Shahzad/statuses/7550668919283712";s:3:"rel";s:9:"alternate";}}i:1;O:16:"SimpleXMLElement":1:{s:11:"@attributes";a:3:{s:4:"type";s:9:"image/png";s:4:"href";s:103:"http://a1.twimg.com/profile_images/1090185625/29465_391454998679_533808679_3864564_6071800_n_normal.jpg";s:3:"rel";s:5:"image";}}}s:5:"title";s:53:"#DIYse_D  DELIVERAB: twitter messages 1, 9th OCT 2010";s:7:"content";s:242:"<a href="http://search.twitter.com/search?q=%23DIYse_D" onclick="pageTracker._setCustomVar(2, 'result_type', 'recent', 3);pageTracker._trackPageview('/intra/hashtag/#DIYse_D');"><b>#DIYse_D</b></a>  DELIVERAB: twitter messages 1, 9th OCT 2010";s:7:"updated";s:20:"2010-11-24T21:46:34Z";s:6:"author";O:16:"SimpleXMLElement":2:{s:4:"name";s:32:"Babar_Shahzad (Babar Shahzad Ch)";s:3:"uri";s:32:"http://twitter.com/Babar_Shahzad";}}}};

Это мой эквивалентный код json для того же, но он не работает.Я положил это здесь, потому что многие, если не все люди, ссылаются на меня, добавляют json к этому коду, т.е. OP, на самом деле то, что я хотел здесь, но OP, чтобы отправить xml на php, так как json у меня не работал раньше ' * Этот код не вызывает ошибок консоли, но выводится сообщение об ошибке * curl отправляет результаты, я проверял это в тестовом php-блоке перед ajax в HTML.

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
 "http://www.w3.org/TR/html4/strict.dtd">

 <html>
 <?php
 function searchResults($q) {

  $host = "http://search.twitter.com/search.atom?q=" . urlencode( $q ) . "&rpp=100";
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $host);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

//Raw xml
  $result = curl_exec($ch);
  curl_close($ch);
  $xml = simplexml_load_string($result);
  return json_encode($xml);
  } 
 ?>
 <head>
 <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js">
 </script>
 </head>
 <body>
 <script type="text/javascript"> var msg_top = <?php echo searchResults('windows');?>;
 </script>
 <script type="text/javascript">
$(document).ready(function() 
{
   $.ajax({
   url: "script.php",
   type: "POST",
   dataType: "json",
   data: msg_top,
   success: function(msg){
   alert("success");
  }
 });
alert("failure");
});
</script>
</body>
</html>

Ответы [ 4 ]

6 голосов
/ 26 ноября 2010

Попробуйте

var data="<?php echo json_encode(serialize($msg));?>";

РЕДАКТИРОВАТЬ: Извините, функция json_encode() автоматически добавляет кавычки в строки,поэтому код должен выглядеть следующим образом:

var data=<?php echo json_encode(serialize($msg));?>;


И после первого ?> есть некоторая избыточная точка с запятой (;), вы должны удалить ее.

5 голосов
/ 26 ноября 2010

serialize не выводит JavaScript.

Попробуйте вместо json_encode .

0 голосов
/ 26 ноября 2010

Вы излучаете код Javascript, который содержит необработанное возвращаемое значение метода PHP serialize.

Это возвращаемое значение не является допустимым синтаксисом Javascript, поэтому вы получаете синтаксическую ошибку.

Вам нужно заключить его в строку, надеяться и молиться о том, чтобы в него никогда не входили кавычки или переводы строк.

Кроме того, вы, вероятно, хотите передать переменную data в $.ajax, не буквальная строка "data".

0 голосов
/ 26 ноября 2010

<?php $msg = searchResults('windows');?>; Почему это; Вот? (последний)
Изменить:
Это то, что я не понимаю здесь <script type="text/javascript"> <?php $msg = searchResults('windows');?>;<br> var data =<?php echo serialize($msg);?>;<br> </script>
Почему вы звоните <?php $msg = searchResults('windows');?>; внутрь <script>...</script> и почему есть; после

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