2012-08-03 2 views
1

그래서 사용자가 링크를 입력하고 정보를 추출하여 목록에 넣을 수있는 웹 사이트가 있습니다.이 jquery 스크립트가 작동하지 않는 이유는 무엇입니까?

어제까지 내 웹 호스팅 파트너가 일부 업그레이드를 완료 할 때까지 모든 것이 정상적으로 작동했습니다. 나는 그 mysql & PHP가 업그레이 드되었습니다 알아요,하지만 다른 무엇을 모르겠어요.

처음에는 DB에 로그인 할 수 없다는 문제가있었습니다 (사용자를 삭제하고 다시 만들어야 만했습니다). 그런 다음 JSON 용 PHP serialise의 문제 (코드를 변경해야 함). 그런 다음 412 잘못된 전제 조건 오류 (호스팅 파트너가 설정 한 특수 규칙이 필요함). 그리고 마지막으로 jquery 스크립트의 마지막 기능이 작동하지 않습니다. 그러나 나는 왜 그런지 전혀 모른다. 전에는 잘되었지만 운이 좋았을 수도 있습니다.

어쨌든, 무슨 일

  1. 사용자가 링크를 입력합니다.
  2. jquery는 JSON을 반환하는 링크를 호출합니다.
  3. JSON이 구문 분석되고 웹 페이지가 결과로 업데이트됩니다.
  4. 사용자가 저장을 클릭하면 데이터가 DB에 입력됩니다.

방화 광구를 사용하고 내 자바 스크립트에 경고를 배치하면 1 단계 2 단계가 올바르게 작동하는 것을 볼 수 있습니다. 반환 된 JSON이 유효합니다 (JSONlint로 확인했습니다). 그러나 3 단계는 작동하지 않습니다. 내 스크립트는 아래에 있습니다.

function getURLData(form) 
{ 
    var listid = $('input#listid').val(); 
    var memberid = $('input#memberid').val(); 
    var link = $('input#link').val(); 
    var sendstr = "http://www.wishindex.com/ajax.php?link=\"" + link + "\"&listid=" + listid + "&memberid=" + memberid; 

alert(sendstr); 
     $.getJSON(sendstr,function(result) 
     { 
      alert('inside');   
      if(result['Itemname'] != "") 
      { 
       alert('inside2'); 
       $('#itemname').val(result['Itemname']); 
       $('#itemname').attr('readonly', 'true'); 
       $('#desc').val(result['Description']); 
       $('#category').val(result['Category']); 
       $('#category').attr('readonly', 'true'); 
       $('#price').val(result['Price']); 
       $('#price').attr('readonly', 'true'); 
       $('#choosepicture').attr('onclick', 'window.open(\'http://www.wishindex.com/picture.php?link=' + result['Link'] + '\')'); 
       if (result['PictureLink'] != "") 
       { 
        $('#picturelink').val(result['PictureLink']); 
        $('#picturelink').attr('readonly', 'true');     
       } 
       else 
        $('#choosepicture').removeAttr('disabled'); 

       $('#automatic').attr('value', 'true');  
       $('#currency').val(result['Currency']); 
       $('#currency').attr('readonly', 'true'); 
      } 
      else 
      {   
       $('#automatic').attr('value', 'false'); 
       $('#manual').html('Please enter details manually'); 
       $('#choosepicture').removeAttr('disabled'); 
       $('#choosepicture').attr('onclick', 'window.open(\'http://www.wishindex.com/picture.php?link=' + result['Link'] + '\')'); 
      } 
     }); 
} 

내가 다음 경고를 활성화하면 내가 JSON이 (불을 지르고 수동으로 링크를 호출을 통해) 유효하며,라는 링크가 올바른지 참조 경고 (& 경고 ('내부') 'inside2 그 ')가 실행되어 코드의이 세그먼트에 도달하지만 HTML 요소가 업데이트되지 않습니다.

내가 말했듯이 업그레이드하기 전에 괜찮 았지만 어쩌면 내가 잘못했기 때문에이 시간을 보냈고 문제를 찾을 수 없어 도움이 될 것입니다.

내 JSON 응답;

[{"ID":"","MemberID":"24","Listid":"41","Itemname":"LEGO Star Wars 9489: Endor Rebel Trooper and Imperial Trooper","Description":null,"NumberDesired":null,"NumberPurchased":null,"Category":{"0":"TOYS_AND_GAMES"},"Link":"\"http:\/\/www.amazon.co.uk\/LEGO-Star-Wars-9489-Imperial\/dp\/B005KISGAI\/ref=pd_rhf_gw_shvl1\"","PictureLink":{"0":"http:\/\/ecx.images-amazon.com\/images\/I\/51fQnt%2BlppL._SL160_.jpg"},"Price":"9.89","Currency":"\u00a3","Priority":null,"SuggestedPurchaser":null,"ActualPurchaser":null,"PurchaseStatus":null,"Productid":"B005KISGAI","Site":"amazon.co.uk","DateAdded":null,"DatePurchased":null,"Domain":null,"Temp":["LEGO-Star-Wars-9489-Imperial","dp","B005KISGAI","ref=pd_rhf_gw_shvl1\""],"Error":"","Warning":null}] 

당신은 (요청에 따라) 여기에서 찾을 수있는 JSON 결과 예를

http://www.wishindex.com/ajax.php?link=%22http://www.amazon.co.uk/LEGO-Star-Wars-9489-Imperial/dp/B005KISGAI/ref=pd_rhf_gw_shvl1%22&listid=41&memberid=24

에게 작업 데모를 위해이를 호출 할 수 있습니다; http://www.wishindex.com/test_newitem.php?listid=41

테스트하려면;

  1. 링크 필드에 amazon.co.uk 같은 http://www.amazon.co.uk/LEGO-Star-Wars-9489-Imperial/dp/B005KISGAI/ref=pd_rhf_gw_shvl1 에서 세부 사항과 나머지 필드를 얻을에
  2. 을 클릭합니다 제품 링크를 입력 자동으로 을 채워야 만 t은 어이 없습니다.
+0

당신이 그것의 JSON 또는 일부를 보여줄 수있다 undefined 때문에

는 그래서 'inside2'를 도달? – Andy

+0

라이브 데모를 게시해야한다고 생각합니다. 호스팅 파트너가 업데이트를 완료했습니다. 승인. 하지만 아약스 호출의 json 결과가 괜찮다면 서버 측은 괜찮습니다. 클라이언트가 어제 일했다면 클라이언트는 괜찮습니다. 그래서 ... 적어도 가정 중 하나가 잘못되었습니다 :) –

답변

1

json은 배열 안에있는 개체입니다.액세스하려면 먼저 result[0]['Itemname'] 또는 result = result[0]과 같은 데이터에 액세스 할 수 있어야합니다. result['Itemname']!= ""

+0

이것은 실제로 문제입니다. JSON은 배열이 아니어야하며, PHP 문제 (ajax.php에서)를 해결하기 위해 내가 변경 한 사항이 배열이 반환되지 않아야한다는 것을 알았습니다. 이제 그것을 변경 한 후 없음 배열을 반환하고 필드가 업데이트됩니다. 아직 해결할 형식 문제가 있지만 쉽게 정렬 할 수 있습니다. 감사. –

+0

@ jason.kaisersmith 기꺼이 도와 드릴 수 있습니다! – Andy

관련 문제