Javascript - 无法解析通过PHP发送的JSON或字符串

如何在Javascript中获取json数据?</ p>

   $ ch = curl_init(); 
curl_setopt($ ch,CURLOPT_URL,$ URL);
curl_setopt($ ch,CURLOPT_TIMEOUT,30); // 30秒后超时
curl_setopt($ CH,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ CH,CURLOPT_HTTPAUTH,CURLAUTH_ANY);
curl_setopt($ CH,CURLOPT_USERPWD, “$用户名:$密码”); \ N $ STATUS_CODE = curl_getinfo($ ch,CURLINFO_HTTP_CODE);

$ result = curl_exec($ ch); //它有json数据

curl_close($ ch);

/ * PHP单元测试 - 显示数据可用且工作正常
$ obj = json_decode($ result,true);
foreach($ obj as $ k =&gt; $ v){
echo $ k。 ''。 $ v。 '&lt; br /&gt;';
}

  • /

    / 但是,从PHP我需要在Ajax / GET请求上将数据发送到浏览器 /
    $ obj = json_decode($ result ,true);
    echo $ obj;
    //如果我不使用json_decode并且只做echo $ result; 然后仍然
    // javascript无法解析json
    </ code> </ pre>

    因此,当Javascript调用该PHP方法时,它无法解码为可读格式:</ p >

      $。get(submit_url +'/ login?',{
    code_please:'007',
    },function(data_please){

    // --- --- --------------------------- FAIL to READ
    alert(data_please);
    alert(data_please [0]);
    alert (data_please.id);
    // var duce = jQuery.parseJSON(data_please);
    // var art1 = duce.email;
    // for(oooi in data_please.db){data_please.db [oooi] .id ++}

});
</ code> </ pre>

输出:</ strong>数组</ p>
</ div>

展开原文

原文

How do i get the json data in Javascript?

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$URL);
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //timeout after 30 seconds
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

$result=curl_exec ($ch); // it has json data 

curl_close ($ch);

/* PHP unit test - shows the data is available and it works 
$obj = json_decode($result, true);
foreach($obj as $k=>$v) {
  echo $k . ' ' . $v  . '<br/>';
}
*/

/* But, from PHP i need to send the data to Browser on Ajax/GET request*/
$obj = json_decode($result, true);
echo $obj;
//if i do not use json_decode and only do echo $result; then still
//javascript is unable to parse the json 

So when Javascript is calling that PHP method, its failing to decode as readable format:

$.get(submit_url + '/login?', {
  code_please: '007',
}, function(data_please) {

  // ------------------------------FAIL to READ 
  alert(data_please);
  alert(data_please[0]);
  alert(data_please.id);
  //var duce = jQuery.parseJSON(data_please);
  //var art1 = duce.email;
  //for(oooi in data_please.db) { data_please.db[oooi].id++ } 

});

Output: Array

doxd96148
doxd96148 显示服务器代码发送的实际响应,例如通过console.log(data_please);
大约 4 年之前 回复
douqin1932
douqin1932 json_decode将JSON字符串转换为PHP数组。当您尝试回显数组时,您将获得字符串“Array”(以及“数组到字符串转换”警告)。你究竟想做什么?如果您尝试将其发送到JavaScriptAJAX调用,那么您只需回显$result,无需在PHP中对其进行解码。
大约 4 年之前 回复
duanduo0520
duanduo0520 使用json_encode()从PHP数组生成JSON字符串,而不是json_decode()。
大约 4 年之前 回复
dpii73380
dpii73380 你什么意思?是不是已经序列化了?在php上使用json_decode?
大约 4 年之前 回复
dongzi0602
dongzi0602 你尝试过序列化数据吗?
大约 4 年之前 回复

2个回答



如果从curl响应中获取JSON编码的字符串,则无需在其上调用 json_decode </ code> ,只是回声串出来。 json_decode </ code>会把它转换成一个不是你想要的PHP数组。</ p>

你也应该使用 $。getJSON </ code调用你自己的端点 >因为这会将JSON转换为可以自动与javascript一起使用的对象。</ p>
</ div>

展开原文

原文

If your getting a JSON encoded string from the curl response you don't need to call json_decode on it, just echo the string out. json_decode will convert it into a PHP array which is not what you want.

Also you should call your own endpoint using $.getJSON as this will convert the JSON into an object you can use with javascript automatically.

douyi1341
douyi1341 谢谢你的工作。
大约 4 年之前 回复



您想要检索JSON数据,但是对所需数据使用 json_decode()</ code> - 此转 将JSON数据转换为PHP数组。 不要这样做!</ p>

</ strong>,你没有在JavaScript函数中解析JSON,所以JS无法将响应理解为JSON object - 它只是一个字符串。</ p>

PHP:</ p>

  $ result = curl_exec($ ch);  //它有json数据
curl_close($ ch);
exit($ result);
</ code> </ pre>

JS:</ p>

   $。get(submit_url +'/ login?',{
code_please:'007',
},function(data_please){
var json = $ .parseJSON(data_please);

console .log(json);
console.log(json [0]);
console.log(json [0] .id);
// etc ...
});
</ code > </ pre>
</ div>

展开原文

原文

You want to retrieve JSON data, but you use json_decode() on the data you want - this turns the JSON data into a PHP array. Don't do that!

Also, you're not parsing the JSON in the JavaScript function, so the JS can't understand the response as a JSON object - it's just a string.

PHP:

$result = curl_exec($ch); // it has json data 
curl_close($ch);
exit($result);

JS:

$.get(submit_url + '/login?', {
  code_please: '007',
}, function(data_please) {
  var json = $.parseJSON(data_please);

  console.log(json);
  console.log(json[0]);
  console.log(json[0].id);
  //etc...      
});

douben7493
douben7493 没有问题的伴侣,很高兴我能帮忙。 祝你好运
大约 4 年之前 回复
douliedai4838
douliedai4838 谢谢你,你的答案都解决了这个问题。
大约 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐