我在下面的我的jquery脚本时遇到问题,这是一个基本的精简版本,甚至无法正常工作,我有jquery脚本调用的php文件,我将其设置为编码并显示json响应
然后,在jquery脚本中,它应该读取该值并对其进行响应,但未获得响应。
json.response是在json字符串中调用名称响应变量的错误方式吗?
有人可以帮助我吗
<?PHP header('Cache-Control: no-cache, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Content-type: application/json'); // set to retunr response=error $arr = array ('resonse'=>'error','comment'=>'test comment here'); echo json_encode($arr); ?> //the script above returns this: {"response":"error","comment":"test comment here"} <script type="text/javascript"> $.ajax({ type: "POST", url: "process.php", data: dataString, dataType: "json", success: function (data) { if (json.response == 'captcha') { alert('captcha'); } else if (json.response == 'error') { alert('sorry there was an error'); } else if (json.response == 'success') { alert('sucess'); }; } }) </script>
更新;
我已经更改了 json.response
进入
数据响应
但这也没有使
这是脚本,使用上面的建议进行了重写,并对无缓存方法进行了更改。
<?php // Simpler way of making sure all no-cache headers get sent // and understood by all browsers, including IE. session_cache_limiter('nocache'); header('Expires: ' . gmdate('r', 0)); header('Content-type: application/json'); // set to return response=error $arr = array ('response'=>'error','comment'=>'test comment here'); echo json_encode($arr); ?> //the script above returns this: {"response":"error","comment":"test comment here"} <script type="text/javascript"> $.ajax({ type: "POST", url: "process.php", data: dataString, dataType: "json", success: function (data) { if (data.response == 'captcha') { alert('captcha'); } else if (data.response == 'success') { alert('success'); } else { alert('sorry there was an error'); } } }); // Semi-colons after all declarations, IE is picky on these things. </script>
这里的主要问题是您在返回的JSON中有一个错字(“ resonse”而不是“ response”。这意味着您在JavaScript代码中查找了错误的属性。一种在将来捕获这些问题的方法)是console.log的价值data,并确保你正在寻找的属性是存在的。
console.log
data
学习如何使用Chrome调试器工具(或Firefox / Safari / Opera /等中的类似工具)也将非常宝贵。