我有 php 档案,它采用一些文件名并将它们转换为 url 并在 JSON 中制作它们。
当我只有一个看起来像这样的 url 回应时,它运行良好 {"url":"http:\/\/10.0.0.10\/CareLabels\/Poetry\/UF06,UA76.jpg"}
它是具有单一内容的单一键,如果我有多个链接,它看起来像这样并且它不起作用
{"url":"http:\/\/10.0.0.10\/CareLabels\/Poetry\/UF06,UA76.jpg"}
{"url":"http:\/\/10.0.0.10\/CareLabels\/Poetry\/UF06.jpg"}
我的问题是如何确保我有 2 个物件以及何时我根本没有物件。有什么方法可以检查和计算我从 php 档案中得到的物件吗?
我可以看到那根本不起作用 data.length
function searchMe(){
const findCode = $("#search").val();
$.ajax({
type: "POST",
url: "carelabel-checker.php",
data: { searching: findCode },
dataType: "json",
success: function(data){
console.log(data);
if(data.length == 0){ // i cant check the length here ...
$('#showme').empty()
$('#search').remove()
document.getElementById("showme-error").innerHTML = "Style Code Not Found";
}else if(data.length == 1){
$('#showme-error').empty()
var redirectWindow = window.open(data.url, '_blank');
redirectWindow.location;
}else if(data.length > 1){ //same here i can't check the length
alert("too much");
}
}
})
};
这也是我的 PHP 代码
$itemArr = array();
$garment = strtoupper(isset($_POST['searching']) ? $_POST['searching'] : null);
if($garment[0] == "U" || $garment[0] == "V"){
$filename = "../SpecS3/poetrycarelabels.txt";
$contents = file($filename);
}
else if($garment[0] == "W" || $garment[0] == "Z") {
$filename = "../SpecS3/wrapcarelabels.txt";
$contents = file($filename);
}
$trimmed_array = array_map('trim', $contents);
//Loop trough txt file
foreach($trimmed_array as $item){
//search for garment code
if(strpos($item,$garment)!== false){
//check if its POETRY
if($item[0] == "U" || $item[0] == "V"){
$itemArr[] = [url =>"http://10.0.0.10/CareLabels/Poetry/".$item];
$item2 = json_encode($itemArr,JSON_UNESCAPED_UNICODE);
echo $item2;
}
//check if its WRAP
else if($item[0] == "W" || $item[0] == "Z") {
$itemArr[] = [ url =>"http://10.0.0.10/CareLabels/Wrap/".$item];
$item2 = json_encode($itemArr,JSON_UNESCAPED_UNICODE);
echo $item2;
}
}
}
uj5u.com热心网友回复:
每次回圈运行时,您都会输出单独的、单独的 JSON 物件,而不是构建一个包含所有内容的阵列,然后在回圈结束后对该阵列进行一次编码。
这个逻辑错误导致 JSON 整体无效,因为 jQuery 试图将 PHP 的整个输出决议为一个连贯的 JSON 物件(或阵列),但事实并非如此。就其本身而言,单独的物件是有效的 JSON,但是当您将它们放在一起时,它们不会形成单个有效的 JSON。您需要将它们包装在一个阵列中。
这应该解决它:
//Loop through txt file
foreach($trimmed_array as $item){
//search for garment code
if(strpos($item,$garment)!== false){
//check if its POETRY
if($item[0] == "U" || $item[0] == "V"){
$itemArr[] = [url =>"http://10.0.0.10/CareLabels/Poetry/".$item];
}
//check if its WRAP
else if($item[0] == "W" || $item[0] == "Z") {
$itemArr[] = [ url =>"http://10.0.0.10/CareLabels/Wrap/".$item];
}
}
$items = json_encode($itemArr,JSON_UNESCAPED_UNICODE);
echo $items;
0 评论