¿Qué hay de malo con esta asignación del objeto json de php a javascript?

Necesito pasar el valor de un objeto php json a javascript. Así es como lo estoy haciendo;

 var msg_top = ;  

Esta es la función php SearchResults que devuelve json:

  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); } 

No hay error en la consola de error, pero no se recibe ningún valor. Sale como array (0) {} para var_dump ($ _ POST); EDITAR Agregué una alerta de prueba después de la función de éxito e imprime la falla

Este es el guión

        var msg_top = ;   $(document).ready(function() { $.ajax({ url: "script.php", type: "POST", dataType: "json", data: "msg_top", success: function(msg){ alert("success"); } }); alert("failure"); });    

esto es json de twitter

   var test_json = {\"id\":\"tag:search.twitter.com,2005:search\\/#DIYSe_F\",\"link\":[{\"@attributes\":{\"type\":\"text\\/html\",\"href\":\"http:\\/\\/search.twitter.com\\/search?q=%23DIYSe_F\",\"rel\":\"alternate\"}},{\"@attributes\":{\"type\":\"application\\/atom+xml\",\"href\":\"http:\\/\\/search.twitter.com\\/search.atom?q=%23DIYSe_F&rpp=100\",\"rel\":\"self\"}},{\"@attributes\":{\"type\":\"application\\/opensearchdescription+xml\",\"href\":\"http:\\/\\/search.twitter.com\\/opensearch.xml\",\"rel\":\"search\"}},{\"@attributes\":{\"type\":\"application\\/atom+xml\",\"href\":\"http:\\/\\/search.twitter.com\\/search.atom?q=%23DIYSe_F&rpp=100&since_id=7750301532557312\",\"rel\":\"refresh\"}}],\"title\":\"#DIYSe_F - Twitter Search\",\"updated\":\"2010-11-24T22:20:44Z\",\"entry\":[{\"id\":\"tag:search.twitter.com,2005:7559269595488256\",\"published\":\"2010-11-24T22:20:44Z\",\"link\":[{\"@attributes\":{\"type\":\"text\\/html\",\"href\":\"http:\\/\\/twitter.com\\/_smir\\/statuses\\/7559269595488256\",\"rel\":\"alternate\"}},{\"@attributes\":{\"type\":\"image\\/png\",\"href\":\"http:\\/\\/s.twimg.com\\/a\\/1289849896\\/images\\/default_profile_5_normal.png\",\"rel\": \":\"image\"}}],\"title\":\"#DIYse_F HIE_STRUCT: HIERARCHICAL STRUCTURE: hierarchical structure to display \\nmessages of Functions and Qualities types\",\"content\":\"#DIYse_F HIE_STRUCT: HIERARCHICAL STRUCTURE: hierarchical structure to display \\nmessages of Functions and Qualities types\",\"updated\":\"2010-11-24T22:20:44Z\",\"author\":{\"name\":\"_smir (Smeer)\",\"uri\":\"http:\\/\\/twitter.com\\/_smir\"}},{\"id\":\"tag:search.twitter.com,2005:7552659368189952\",\"published\":\"2010-11-24T21:54:28Z\",\"link\":[{\"@attributes\":{\"type\":\"text\\/html\",\"href\":\"http:\\/\\/twitter.com\\/_smir\\/statuses\\/7552659368189952\",\"rel\":\"alternate\"}},{\"@attributes\":{\"type\":\"image\\/png\",\"href\":\"http:\\/\\/s.twimg.com\\/a\\/1289849896\\/images\\/default_profile_5_normal.png\",\"rel\":\"image\"}}],\"title\":\"#DIYse_F SEND_MSG: users can send messages of four types ie \\n\\nFunction,Quality,Solution, and delivery\",\"content\":\"#DIYse_F SEND_MSG: users can send messages of four types ie \\n\\nFunction,Quality,Solution, and delivery\",\"updated\":\"2010-11-24T21:54:28Z\",\"author\":{\"name\":\"_smir (Smeer)\",\"uri\":\"http:\\/\\/twitter.com\\/_smir\"}},{\"id\":\"tag:search.twitter.com,2005:7548895705956352\",\"published\":\"2010-11-24T21:39:31Z\",\"link\":[{\"@attributes\":{\"type\":\"text\\/html\",\"href\":\"http:\\/\\/twitter.com\\/Babar_Shahzad\\/statuses\\/7548895705956352\",\"rel\":\"alternate\"}},{\"@attributes\":{\"type\":\"image\\/png\",\"href\":\"http:\\/\\/a1.twimg.com\\/profile_images\\/1090185625\\/29465_391454998679_533808679_3864564_6071800_n_normal.jpg\",\"rel\":\"image\"}}],\"title\":\"#DIYse_F READ_MSG: Users can read messages of all four types in \\n\\ndifferent windows\",\"content\":\"#DIYse_F READ_MSG: Users can read messages of all four types in \\n\\ndifferent windows\",\"updated\":\"2010-11-24T21:39:31Z\",\"author\":{\"name\":\"Babar_Shahzad (Babar Shahzad Ch)\",\"uri\":\"http:\\/\\/twitter.com\\/Babar_Shahzad\"}}]}; 

Si usa json_encode para codificar los datos como JSON, la salida ya será una expresión de JavaScript válida. Entonces no necesita ponerlo entre comillas.

De hecho, la aplicación de addslashes convertirá la expresión de JavaScript válida en una cadena que contenga esa expresión de JavaScript:

 $json = json_encode(array('foo'=>'bar')); var_export($json); // '{"foo":"bar"}' $string = addslashes($json); var_export($str); // '{\\"foo\\":\\"bar\\"}' 

Al usar estos valores en JavaScript, $json contendrá una expresión de objeto válida, mientras que $str contendrá una expresión de cadena:

 var json = , str = ""; 

Esto se convertirá en:

 var json = {"foo":"bar"}, str = "{\"foo\":\"bar\"}"; 

Así que solo use json_encode sin aplicar ninguna encoding / escape adicional. En su caso (ya que searchResults ya devuelve una cadena JSON):

 var test_json = ; 

Si la función searchResults aún no devuelve JSON, entonces json_encode () sería más fácil, por ejemplo

  

Si la función searchResults ya devuelve el JSON correcto, debería poder asignar el resultado directamente, por ejemplo