拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 从AjaxJson对url链接的回应?

从AjaxJson对url链接的回应?

白鹭 - 2022-02-18 2079 0 0

我有 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 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *