开发者

error missing ; before statement in jquery when sending serialized xml through jquery

I am getting this error on var data =<?php echo serialize($msg);?>; line of the code below. console also raises data not defined error. I f put quotes around data, then this error goes but 1st error stays.

EDITED

//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>

I tried to see but couldn't figure out any problem

this is script.php

<?php
var_dump($_POST);
?>

this is xml from twitter

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:"applicatio开发者_运维技巧n/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";}}}};

This is my json equivalent code for same but its not working. I put it here because many if not all people are referring me add json to this code i.e OP, actually what I was wanting here but OP to send xml to php as json did not work for me earlier' *This code raises no console errors, but failure alert is ouput * curl is sending results, I have tested that in a test php block just before ajax in 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>


Try

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

EDIT: I'm sorry, the json_encode() function automatically adds the quotes to strings, so the code should look like:

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


And there's some redundant semicolon (;) after the first ?>, you should remove it.


serialize does not output JavaScript.

Try json_encode instead.


You're emitting Javascript code that contains the raw return value of PHP's serialize method.

This return value is not valid Javascript syntax, so you're getting a syntax error.

You need to wrap it in a string, and hope and pray that it never includes quotes or newlines.

Also, you probably want to pass the data variable to $.ajax, not the literal string "data".


<?php $msg = searchResults('windows');?>; Why is ; here? (the last one)
Edit:
Is something that i dont understand here <script type="text/javascript"> <?php $msg = searchResults('windows');?>;
var data =<?php echo serialize($msg);?>;
</script>

Why do you call <?php $msg = searchResults('windows');?>; inside <script>...</script> and why is there a ; after

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜