Post by amarkoul » Mon Feb 13, 2017 11:00 pm

Καλησπέρα στην ελληνική κοινότητα του Opencart.

Υλοποιώ αυτές τις ημέρες ένα e-shop για ποδήλατα (δουλεύω σε έκδοση 2.0.1.1), έχοντας κατεβάσει (αγορασμένο) ένα Opencart Template, και αντιμετωπίζω ένα πολύ σοβαρό πρόβλημα στην διαδικασία της πώλησης (για την ακρίβεια, στο checkout).

Έστω ότι ο πελάτης έχει κάνει login για να συνδεθεί στο σύστημα (δεν είναι, δηλαδή, guest) και επιλέγει κάποιο προϊόν. Πατώντας το πλήκτρο "Αγορά" εμφανίζεται η φόρμα του checkout.

Εκεί, από την στιγμή που ο πελάτης έχει κάνει login, το σύστημα τον οδηγεί κατευθείαν στις "Λεπτομέρειες Χρέωσης" ώστε να επιλέξει αν θα σταλεί το προϊόν στην διεύθυνση που έχει δηλώσει όταν έκανε την εγγραφή ή αν θα πρέπει να ορίσει μια νέα διεύθυνση.

Μόλις όμως πατήσει το πλήκτρο "Συνέχεια" για να πάει το σύστημα στις "Λεπτομέρειες Αποστολής", βγάζει το παρακάτω μήνυμα σφάλματος στην κονσόλα (και δεν προχωράει καν στο επόμενο βήμα):

Code: Select all

[b]SyntaxError: Unexpected token < in JSON at position 0[/b]

OK
<input type="radio" name="payment_address" value="existing" id="payment-address-existing" checked="checked" />
<label for="payment-address-existing">Θέλω να χρησιμοποιήσω μια υπάρχουσα διεύθυνση</label>
<div id="payment-existing">
  <select name="address_id" style="width: 100%; margin-bottom: 15px;" size="5">
            <option value="6" selected="selected">[i]Ονοματεπώνυμο, Διεύθυνση, Πόλη, Ελλάδα[/i]</option>
          </select>
</div>
<p>
  <input type="radio" name="payment_address" value="new" id="payment-address-new" />
  <label for="payment-address-new">Θέλω να χρησιμοποιήσω μια νέα διεύθυνση</label>
</p>
<div id="payment-new" style="display: none;">
  <table class="form">
    <tr>
      <td><span class="required">*</span> Όνομα</td>
      <td><input type="text" name="firstname" value="" class="large-field" /></td>
    </tr>
    <tr>
      <td><span class="required">*</span> Επώνυμο</td>
      <td><input type="text" name="lastname" value="" class="large-field" /></td>
    </tr>
    <tr>
      <td>Επωνυμία</td>
      <td><input type="text" name="company" value="" class="large-field" /></td>
    </tr>
            <tr>
      <td><span class="required">*</span> Διεύθυνση 1</td>
      <td><input type="text" name="address_1" value="" class="large-field" /></td>
    </tr>
    <tr>
      <td>Διεύθυνση 2</td>
      <td><input type="text" name="address_2" value="" class="large-field" /></td>
    </tr>
    <tr>
      <td><span class="required">*</span> Πόλη</td>
      <td><input type="text" name="city" value="" class="large-field" /></td>
    </tr>
    <tr>
      <td><span id="payment-postcode-required" class="required">*</span> Τ.Κ.</td>
      <td><input type="text" name="postcode" value="" class="large-field" /></td>
    </tr>
    <tr>
      <td><span class="required">*</span> Χώρα</td>
      <td><select name="country_id" class="large-field">
          <option value=""> --- Επιλέξτε --- </option>
                              <option value="55">Cyprus</option>
                                        <option value="84" selected="selected">Greece</option>
                            </select></td>
    </tr>
  </table>
</div>
<br />
<div class="buttons">
  <div class="right">
    <a id="button-payment-address" class="button" ><span>Συνέχεια</span></a>
  </div>
</div>
<script type="text/javascript"><!--
$('#payment-address input[name=\'payment_address\']').live('change', function() {
	if (this.value == 'new') {
		$('#payment-existing').hide();
		$('#payment-new').show();
	} else {
		$('#payment-existing').show();
		$('#payment-new').hide();
	}
});
//--></script> 
<script type="text/javascript"><!--
$('#payment-address select[name=\'country_id\']').bind('change', function() {
	$.ajax({
		url: 'index.php?route=checkout/checkout/country&country_id=' + this.value,
		dataType: 'json',
		beforeSend: function() {
			$('#payment-address select[name=\'country_id\']').after('<span class="wait">&nbsp;<img src="catalog/view/theme/theme086/image/loading.gif" alt="" /></span>');
		},
		complete: function() {
			$('.wait').remove();
		},			
		success: function(json) {
			if (json['postcode_required'] == '1') {
				$('#payment-postcode-required').show();
			} else {
				$('#payment-postcode-required').hide();
			}
			
			html = '<option value=""> --- Επιλέξτε --- </option>';
			
		},
		error: function(xhr, ajaxOptions, thrownError) {
			alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
		}
	});
});

$('#payment-address select[name=\'country_id\']').trigger('change');
//--></script>
Ο κώδικας του checkout είναι, αρχικά, συνδυασμός html και php (όπως κανονικά στο Opencart), αλλά για να πάει από το ένα βήμα του checkout στο άλλο χρησιμοποιεί javascript και json.

Έχω "κολλήσει" σε αυτό το σημείο και, όσο και αν έχω προσπαθήσει, δεν έχω καταφέρει να βρω λύση! Όποιος μπορεί να με βοηθήσει είναι ευπρόσδεκτος!!!

Ευχαριστώ προκαταβολικά


Posts

Joined
Mon Feb 13, 2017 10:38 pm
Who is online

Users browsing this forum: No registered users and 5 guests