无法访问javascript中的我的json数据

无法访问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").

在JSON中处理jquery请求,但我在访问数据时遇到了一些问题

我的要求是:

$(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');