无法访问javascript中的我的json数据
在JSON中处理jquery请求,但我在访问数据时遇到了一些问题 我的要求是:无法访问javascript中的我的json数据,javascript,jquery,json,Javascript,Jquery,Json,在JSON中处理jquery请求,但我在访问数据时遇到了一些问题 我的要求是: $(document).ready( function () { $("#client").change( function() { $.ajax({ type: "GET", url: "jsonContacts.php", data: "q="+$("#client").
$(document).ready( function () {
$("#client").change( function() {
$.ajax({
type: "GET",
url: "jsonContacts.php",
data: "q="+$("#client").val(),
success: function(data){
document.form.contactClient.options.length=0;
for(var i=0; i<data.length; i++) {
document.form.contactClient.options[i]=new Option(data[i].prenom, data[i].id, false, false);
}
document.form.contactClient.options[i]=new Option("End", i, false, false);
}
});
});
});
它给了我未定义的:/
下面是我的json示例:
[{"id":"1","prenom":"Maxime","nom":"Xnate"},{"id":"3","prenom":"Test_prenom","nom":"Test_nom"}]
我的请求显示两个空选项和一个选项“End”,所以它在整个数组中运行良好,但无法获取任何数据
那么你对数据的访问有什么想法吗
谢谢
编辑:
我的json编码
$json = array();
while($contact = $requeteContact->fetch()) {
array_push($json, array("id" => $contact['idContact'],
"prenom" => $contact['CTC_Prenom'],
"nom" => $contact['CTC_Nom']));
}
echo json_encode($json);
工作:
$(document).ready( function () {
$("#client").blur( function() {
$.ajax({
type: "GET",
url: "jsonContacts.php",
data: "q="+$("#client").val(),
success: function(data){
document.form.contactClient.options.length=0;
for(var i=0; i<data.length; i++) {
document.form.contactClient.options[i]=new Option(data[i].prenom + " " + data[i].nom, data[i].id, false, false);
}
document.form.contactClient.options[i]=new Option("End", i, false, false);
}
});
});
});
$(文档).ready(函数(){
$(“#客户端”).blur(函数(){
$.ajax({
键入:“获取”,
url:“jsonContacts.php”,
数据:“q=”+$(“#客户端”).val(),
成功:功能(数据){
document.form.contactClient.options.length=0;
对于(var i=0;i,您的数据可能只是作为字符串返回。您可以通过以下几种方式解决此问题:
1) 使用getJSON
$.getJSON('http://..',{q:$("#client").val()},function(result){
})
2) 将字符串解析为JSON
JSON.parse(data);
3) 将数据类型设置为“json”。如果执行此操作,则必须将服务器端的内容类型设置为“application/json”。在PHP中,如下所示:
header('Content-Type: application/json');
你确定数据是以上述格式返回的吗?跨源请求使用数据类型:“json”
或“jsonp”以获得真正的json响应。这就是我手动转到jsonContacts.php时得到的结果?q=Actemium至少当我将数据类型:“json”添加到参数时,我的请求不再工作了:/打印完整的“数据”数组并检查您从服务器返回的内容。在getJSON上,当我键入alert(data);,它只会显示一个空窗口。已尝试过解析,但不起作用。尝试使用标头也不起作用:/这是因为getJSON返回一个对象。尝试alert(JSON.stringify(data));或alert(数据[0].id);我已通过将事件从“更改”更改为“模糊”部分解决了此问题,但如果它与更改一起工作,那就太好了。我假设您在成功函数中执行此操作,因此没有异步问题。请尝试这样循环:$.each(data,function(key,val){console.log(key,val[“prenom”];});如果这不起作用,是否可以发布代码的更新版本?如果服务器返回有效的JSON,这应该可以正常工作:打开控制台查看结果。
header('Content-Type: application/json');