2011-06-10 48 views
0

我正在使用由Nodstrum提供的优秀教程。我试图用PHP,MYSQL和AJAX自动填充多个文本字段。我有一个PHP脚本,这里的代码返回我的结果行:PHP和MYSQL AJAX - 自动填充多个文本字段

echo '<li onClick="fill(\''.$result->name.'|'.$result->id.'\');">'.$result->name.'</li>'; 

请注意,我我分隔条件的结果与一个pipestem字符。

这里是函数,我收到错误'未定义或不是一个对象'我打破了价值观,并使用pipestem分裂从MySQL值。

function fill(thisValue) { 
    myvalues=thisValue.split('|') { 
     $('#inputString').val(myvalues[0]); 
     $('#email').val(myvalues[1]); 
    } 
    window.setTimeout("$('#suggestions').hide();", 200); 
} 

如果我“OK”的错误信息,我会最终看到文本字段中显示这两个值,所以我相信我从MySQL正确以便在检索值。我感谢任何人都可以提供的帮助,让我以正确的方向或全新的视角进行指导。再次感谢 , --Matt

+0

语法错误 - myValues = thisValue.split ...这行应该以var开头,并以分号结尾并去掉下两行的大括号。 – James 2011-06-10 13:25:55

+0

詹姆斯,我尝试了你的建议,非常感谢你花时间提供你的建议。我仍然收到相同的错误消息。未定义为null或不是 - var myvalues = thisValue.split('|');谢谢 – 2011-06-10 14:08:21

回答

0

值要传递变成thisValue为空或未定义。你可以在盲目地试图分割它之前测试这个参数(分割函数只对字符串起作用)。

function fill(thisValue) { 
    // "value" will always be a string 
    var value = thisValue ? String(thisValue) : ''; 

    // this line will not generate an error now 
    var myvalues=value.split('|'); 

    // but these ones might! make sure the length of myvalues is at least 2 
    if (myvalues.length >= 2) { 
     $('#inputString').val(myvalues[0]); 
     $('#email').val(myvalues[1]); 
    } 
    // this might need to go inside the above if 
    window.setTimeout("$('#suggestions').hide();", 200); 
} 
+0

詹姆斯,非常感谢您抽出宝贵的时间来列出关于我所看到的意见!我非常感谢你告诉我如何做到这一点,而不是为我做。我根据您的意见做了一些更改,脚本运行良好!再次感谢您向我展示如何做到这一点! – 2011-06-10 14:47:19

0

试试这个:

function fill(thisValue) { 
    myvalues=thisValue.split('|'); 

    $('#inputString').val(myvalues[0]); 
    $('#email').val(myvalues[1]); 

    window.setTimeout("$('#suggestions').hide();", 200); 
} 
+0

感谢您花时间回答这个帖子Rakesh。我已经实现了你的建议,并且我收到了错误消息:错误:'undefined'为null或者不是这行代码中的对象 - myvalues = thisValue.split('|'); – 2011-06-10 12:57:31

+0

你为'thisValue'得到了什么,你能提醒还是记录下来?粘贴在这里。 – 2011-06-10 13:08:38

+0

查看这里的工作示例... http://jsfiddle.net/srakesh/u56sA/1/ – 2011-06-10 13:11:52