我有 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;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/410626.html
標籤:
上一篇:HTML錨標記的onclick不適用于RESTGETAPI呼叫
下一篇:如何使子div比可滾動父級更寬
